Shading after Boolean
I guess there are 2 main ways to do it in a clean way: with Boolean or with LoopTools > Circle.


With a Boolean modifier you must make sure that your boolean object is well placed and has the right amount of vertices. You will probably make some vertices merge. Don't forget to bevel the ring so that it stays clean and sharp.
With the LoopTools > Circle tool, you must first delete some faces, use the LoopTools > Circle, then extrude inwards and close it manually.