It has two cool features that I wish Spring had as well (will create a separate issue for the other feature). Dagger adds beans automatically to the application context (called ObjectGraph in Dagger) when a field or constructor is annotated with @Inject (Dagger doesn't support method injection). This means the bean itself doesn't need to be annotated at all. All the alternatives for this in Spring are not very appealing:
(a) Using @Component leads to a dependency on the Spring API
(b) Using @Named (without name) isn't very descriptive at all
(c) Using @ManagedBean is awkward when not using JSF and requires one to add another dependency since it's not part of the JDK
In short, it would be great if no annotation would be required.