spring boot @Bean源码分析
1.先看下 Bean 注解的内容
1 |
|
Target 中指定了注解的使用范围是METHON 和 ANNOTATION_TYPE,就是限定方法 和 注解上可以使用。
@Target(ElementType.METHOD) //方法
@Target(ElementType.ANNOTATION_TYPE)//注解
value -- bean别名和name是相互依赖关联的,value,name如果都使用的话值必须要一致
name -- bean名称,如果不写会默认为注解的方法名称
autowire -- 自定装配默认是不开启的,建议尽量不要开启,因为自动装配不能装配基本数据类型、字符串、数组等,这是自动装配设计的局限性,以及自动装配不如显示依赖注入精确
Spring引入Autowire(自动装配)机制就是为了解决标签下 标签过多的问题, 标签过多会引发两个问题:
- 如果一个Bean中要注入的对象过多,比如十几二十个(这是很正常的),那将导致Spring配置文件非常冗长,可读性与维护性差
- 如果一个Bean中要注入的对象过多,配置麻烦且一不小心就容易出错
default-autowire有四种取值:- no:默认,即不进行自动装配,每一个对象的注入比如依赖一个
标签 - byName:按照beanName进行自动装配,使用setter注入
- byType:按照bean类型进行自动装配,使用setter注入
- constructor:与byType差不多,不过最终属性通过构造函数进行注入
通过测试类,可以看到这个注解的
1 | /** |
结果
liu big big
刘大大
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 人话翻译机!
评论