在spring中,Bean的执行流程为启动spring容器,实例化bean,将bean注册到spring容器中,将bean装配到需要的类中。
既然我们需要将bea装配到需要的类中,那么如何实现呢?这篇文章,将来阐述一下如何实现将bean装配到需要的类中,我们叫它对象装配或者对象注入。
一.对象装配的三种方法
对象装配主要有三种方法:
1.属性注入
2.构造方法注入
3.setter方法注入
1.属性注入
属性注入可以使用@Autowired注解,这相当于从spring里拿了一个对象。
属性注入:优点是简单方便,易于使用。缺点是只能在IoC容器使用,不能在非IoC容器使用。,并且只有在使用的时候才会出现空指针异常,很容易违背单一设计原则
(虽然缺点多,但依然是最常用的在目前,因为它的优点简单易用让它非常突出,如果违反了单一原则也可以通过代码来解决)
2.setter方法注入
Setter方法注入:
优点是完全符合单一设计原则,因为使用set方法传参就是只传入一个对象
缺点是无法注入一个不可变对象(final修饰的对象),注入的内容可以被修改(可以调用set方法修改)
Settr方法是spring早期推荐的注入方法,在通用性上不如构造方法,现在的spring以及推荐使用构造方法注入的方式来进行注入。
3.构造函数注入
构造方法注入:
构造方法注入式spring官方推荐的注入方式,它的优点是通用性好,在注入之前能够保证注入的对象不为空。可以注入不可变对象,注入的内容不可以被修改,注入的对象会被完全初始化
它的缺点是如果有多个注入会显得臃肿,代码量多。
单一设计原则(简单点说,就是一个类只干一件事情,只负责一个职责,对于一个类,不能让它负责多个职责)