Constructor injection doesn't resolve circular dependencies, but simply keeps you from creating them, unless you have run-time proxy creation, which is how Guice does it. Unfortunately until Maxim Porges gets Loom-AS3 off the ground (which looks to be soon) proxy generation isn't an option in Flash.
As a rule, I agree that constructor injection is a better option. But a lot of the things that make it attractive in Java aren't available in Flash: Run-time introspection of parameter names, parameter annotations, constructor overloading, final vars, etc.
When Loom is stable and complete enough for me to build on, and I've got some other changes out of the way I intend to build into SP-IOC the ability to group rules into sets, and the injector will go through the rules and make sure they don't specify anything illegal such as an unresolveable dependency, and build proxies to get around the circular dependency problem.
First we'll need annotations based on argument position, such as:
[Inject(position="0", name="foo")]
[Inject(position="1", name="bar")]
function ClassWithConstructorInjection(s1:SomeClass, s2:AnotherClass)
{
//;
}
Which doesn't seem so bad at first, but due to the way ASDoc works (you can document annotations), any documentation will have to go between the last annotation and the constructor method. If you've got 3 paragraphs of documentation between the Injection annotations and your constructor, you're far more likely to forget to change one when you change the other.
None of these are of course show-stoppers, I'm just trying to elaborate on why I think it needs more thought put into it before I just jump in.