All of the above certainly work. I prefer to see all parts of every plant moving a little bit as a sign that circulation is good. I have a canister and use a spray bar. Although I would prefer to have the spraybar placed at the top in either the back or the sides, as others do, I don't like the fact that the output stream will push, albeit gently, the stems away as the stems reach the top, as mine do. So, I have placed my spraybar in the front (hidden by the tank border) so that the output flows directly down the front glass causing the same flow pattern as is delivered by having the spraybar in the back, but with higher flow, now, down the front and across the substrate surface.
I also use a skimmer, placed in the back, to increase gas exchange (I've measured O2 levels at 6ppm without it and at over 12ppm with it, using the Salifert kit). I use a pump-type skimmer and this provides extra surface rippling with a counter-flow pattern to the main spraybar pattern to cause some flow turbulence. I would prefer to use a Fluval-type skimmer that attaches to the filter intake, but I found that these really gum-up the filter since they will suck in a lot of food. The stand-alone skimmers can be put on a timer to be shut off during normal feeding times.
There is also a trick you can use to help identify circulation strength and dead spots. Credit to goes to someone long ago (whom I no longer remember). I take a thin rod, long enough to reach the bottom of my tank, and tie thread (large enough to see) to it at about 1/2 inch intervals along the bottom ~3 inches of the rod. The strings are cut to about 1 inch lengths. You can then put this into any point in the tank and see them 'wave in the wind' depending upon strength of circulation in that area.