1 前言
上一篇讲了 Sping中的bean
这一篇讲讲Spring的依赖注入
2 本篇内容
依赖注入,依赖注入的方式,构造方法注入,setter注入
3 依赖注入
我感觉bean的依赖注入说白了就是创建bean的时候带参初始化。xml注入主要有两种,构造方法注入和setter注入。
4 构造方法注入
其实基本创建语句<bean id="" class=""></bean>
就是构造方法注入,此时使用了无参构造器,当在类中定义了含参构造器时,可以通过<constructor-arg></constructor>
标签来定义参数以匹配对应的构造方法。
4.1 constructor-arg标签
有以下的标签属性:
- name:参数名称(类中定义的名称)
- value:基本类型值
- ref:引用类型值
- index:参数的索引号,从0开始
- type:参数的类型,使用包装类如Integer表示
举两个应用例子应该就懂了,User类中id(Integer),username(String),age(Integer),有含参构造器User(Integer id,String username),没有设置的值就为null,两种可混着写,例如第一个参数用name+value指定,第二个参数用index+type+value指定也行。rel填另一个bean的值,当属性是一个类对象的时候用到,但是开发中用得不多。
<bean id="userIdCon_1" class="edu.spring.pojo.User">
<constructor-arg name="id" value="1" ></constructor-arg>
<constructor-arg name="username" value="j" ></constructor-arg>
</bean>
<bean id="userIdCon_2" class="edu.spring.pojo.User">
<constructor-arg index="0" type="java.lang.Integer" value="2"></constructor-arg>
<constructor-arg index="1" type="java.lang.String" value="m"></constructor-arg>
</bean>
5 setter方法注入
首先要在类中生成对应的setter方法,然后在xml的bean定义中使用property子标签定义值,name是参数名称,value是想要赋予的值,两种value书写方式,见代码
<bean id="userIdSet" class="edu.zhku.spring.pojo.User">
<property name="id" value="3"></property>
<property name="username" value="u"></property>
<property name="age">
<value>111</value>
</property>
</bean>
结语
1.感觉依赖注入的概念理解的还不是很深,过几天准备翻译一下参考文献3。
2.依赖注入也可以通过注解的方式进行,但是老师没讲的很细,过两天自己研究一下另写一篇吧。
参考文献
1.控制反转和依赖注入的理解(通俗易懂)
2.【第二章】 IoC 之 2.1 IoC基础 ——跟我学Spring3
3.Inversion of Control Containers and the Dependency Injection pattern