0


Spring注入的三种方式

Spring实例注入的三种方式:
1.属性注入,即使用注解注入。
2.set方法注入。
3.构造方法注入。
1.属性注入
使用@Autowired、@Resource或@Inject注解注入。
1.1@Autowired:Spring提供,默认按照类型装配。必须要求要注入的对象存在,如果要允许空值,设置其required属性为true
1.2@Resource:J2EE提供,默认按照名称装配,名称可以通过name属性指定,默认取字段名进行查找并完成注入。找不到名称时才会按照类型进行装配。所以@Resource的作用其实和@Autowired类似,只不过是注入方式不同。
但是属性注入是不推荐的。
2.set方法注入
我们很少使用该方法注入,可能是因为代码过于臃肿

@ServicepublicclassBService{AService aService;@AutowiredpublicvoidsetaService(AService aService){this.aService = aService;}}

3.构造方法注入

@ServicepublicclassAService{BService bService;@AutowiredpublicAService(BService bService){this.bService = bService;}}

类中有多个构造方法时,@Autowired是必须的,用来指定使用哪个构造方法。
4.使用哪种构造方法
使用构造方法注入更好,构造注入方法有以下几个优势:
4.1:依赖不可变。通过构造方法注入的bean以后无法修改。
4.2:依赖不为空。构造方法注入时会自动检查注入的对象是否为空。
4.3:完全初始化。拿到的是完全初始化的对象。
5.为什么实体类不用注入
考虑是否将一个class交由spring管理,关键看这个class产生的bean是否符合spring提供的scope的生命周期规则。
5.1、实体类需要附上对应的数据才有意义;
5.2、由spring管理并注入的类是可大量重复使用的;
5.3、一个实体类可对应多条数据,如果实例化该类,则需要针对所有的数据实例化,这是不可能的,导致程序更加臃肿,还不如需要的时候再实例化。

标签: spring java 后端

本文转载自: https://blog.csdn.net/weixin_45830664/article/details/126226803
版权归原作者 学java做互联网霸主 所有, 如有侵权,请联系我们删除。

“Spring注入的三种方式”的评论:

还没有评论