@Configuration这个注解去掉也一样运行
Topic source@Configuration注解的作用是启用完全模式,如果没有该注解,会默认启用精简模式。精简模式下的@Bean方法无法调用另一个@Bean方法,而完全模式可以。因此@Bean注解所在类一般都会标注上@Configuration注解,第一个作用是启用完全模式,第二个作用就是显式标记这个类是配置类,而非一个普通的JavaBean。
这些spring的官方文档上都有写,要想深入了解spring,还需学习源码。一般来说会用就行了。
关于@Configuration精简模式的解释存在问题,现在修正一下:
精简模式下@Bean方法是可以调用另一个@Bean方法的,但它的缺陷是被调用的@Bean方法产生的实例在容器中不是唯一的,例如:
AppConfig{
@Bean
A getA(){
System.out.println(getB() == getB()); //结果是false,说明每调用一次getB()都会产生新的实例。加上@Configuration之后结果就是true了。
return new A();
}
@Bean
B getB(){
return new B();
}
}
因此,更准确的说法是,在完全模式下,一个@Bean方法可以正确地调用另一个@Bean方法,从而正确地装配Bean。
- 1
Loading...
@Configuration这个注解去掉也一样运行。
越学感觉对底层一点不了解。直接从注解反射跳到spring,人家怎么实现的,干了啥一点不知道