SSM-Spring-Spring装配Bean-依赖注入三种方式式
在实际环境中实现IOC容器的方式主要分两种:
- 依赖查找:是通过资源定位,把对应的资源查找回来
- 依赖注入:Spring主要使用依赖注入,分3种:
- 构造器注入
- setter注入
- 接口注入
主要使用构造器注入和setter注入,接口注入是从别的地方注入的方式
构造器注入
构造器注入依赖构造方法,而构造方法可以是有参和无参,大部分情况想是通过类的构造器创建对象,Spring采用反射的方式,通过使用构造器方法完成注入。
案例:
//创建一个类Role
public class Role {
private Long id;
private String roleName;
private String note;
//set and get
public Role(Long id, String roleName, String note) {
this.id = id;
this.roleName = roleName;
this.note = note;
}
}
因为创建的是有参构造器,所以不能和创建无参构造方法那样去创建对象,为了Spring能正确创建对象,如下:
<bean id="Role" class="spring.pojo.Role">
<constructor-arg name="id" >
<value>1</value>
</constructor-arg>
<constructor-arg name="roleName" value="总经理"/>
<constructor-arg name="note" value="公司管理者"/>
</bean>
constructor-arg元素用于定义类构造方法参数,name是属性名,vlaue是值。还可以通过index属性设置定义参数的位置。
使用setter注入
setter注入是Spring中最流行的注入方式,利用Java Bean规范所定义的setter方法来完成注入,灵活且可读性高。消除了使用构造器注入出现多个参数的可能性,他也是通过反射技术实现的,XML代码如下:
<bean id="Role2" class="spring.pojo.Role">
<property name="id" value="1"/>
<property name="note" value="重要人员"/>
<property name="roleName" value="高级工程师"/>
</bean>
注意:使用这种方式必须要有无参构造器
接口注入
当资源并非来自于自身系统,就可以采用接口注入的形式来获取它