Why do I not need @Autowired on @Bean methods in a Spring configuration class?
@Autowire
lets you inject beans from context to "outside world" where outside world is your application.
Since with @Configuration
classes you are within "context world ", there is no need to explicitly autowire (lookup bean from context).
Think of analogy like when accessing method from a given instance. While you are within the instance scope there is no need to write this
to access instance method, but outside world would have to use instance reference.
Edit
When you write @Configuration
class, you are specifying meta data for beans which will be created by IOC.
@Autowire
annotation on the other hand lets you inject initialized beans, not meta-data, in application. So, there is no need for explicit injection because you are not working with Beans when inside Configuration
class.
Hi Jan your question is marked as answered over 4 years ago but I've found a better source: https://www.logicbig.com/tutorials/spring-framework/spring-core/javaconfig-methods-inter-dependency.html
here's another article with the same idea: https://dzone.com/articles/spring-configuration-and, it also states that such usage is not well documented which I found true. (?)
so basically if beanA
's initialization depends on beanB
, spring will wire them without explicit @Autowired
annotation as long as you declare these two beans in the application context (i.e. @Configuartion
class).