Spring的依赖注入有三种方式:
1,构造器注入
2,setter注入
3,接口注入
下面我给大家介绍一下这三种注入
1.构造器注入
构造器注入主要是依赖于构造方法去实现,构造方法可以是有参也可以是无参,我们在平常都是通过类的构造方法来创建类对象,以及给他赋值,同样Spring 也可以采用反射的方式,通过构造方法来完成注入注入(赋值),这就是构造器注入的原理,说了那么多我们就来看看代码的实现吧
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/** * * 构造器注入 * */ package com.xiaojiang.Spring; public class Role { private int id; private String roleName; private String note; public Role(){} public Role( int id,String roleName, String note) {<br> super (); this .id = id; this .roleName = roleName; this .note = note; }<br><br> //setter,getter方法省略 } |
applicationContext.xml文件
1
2
3
4
5
6
7
|
<!--构造器配置--> <bean id= "Role" class = "com.xiaojiang.Spring.Role" > <constructor-arg value= "1" type= "int" ></constructor-arg> <constructor-arg value= "小江" type= "java.lang.String" ></constructor-arg> <constructor-arg value= "有点丑" type= "java.lang.String" ></constructor-arg> </bean> |
constructor-arg元素用于定义类构造方法的参数,其中type用于定义参数的类型,也可以使用index来定义参数的位置,而这里的value是用于设置值,以上的代码就是通过一个Spring去装配一个Bean。
2.setter注入
setter是Spring现在最主流的注入方式,它可以利用Java Bean 规范所定义set/get方法来完成注入,可读性灵活性高,它不需要使用构造器注入时出现的多个参数,它可以把构造方法声明成无参构造,再使用setter注入设置相对应的值,其实也是通过java反射技术去实现的.
类里面的代码set和get方法我就省略了,下面直接上xml代码
1
2
3
4
5
6
|
<!--配置setter注入--> <bean id= "Role" class = "com.xiaojiang.Spring.Role" > <property name= "id" value= "1" ><property> <property name= "roleName" value= "小江" ><property> <property name= "note" value= "测试" ><property> </bean> |
以上方式就是Spring最主要的方式了,使用广泛
3.接口注入
接口注入模式因为历史较为悠久,在很多容器中都已经得到应用。但由于其在灵活性、易用性上不如其他两种注入模式,因而在 IOC 的专题世界内并不被看好。