续:Spring实现控制反转(IOC)的三种方式(零)——理解IOC
Spring实现控制反转(IOC)的三种方式(一)——属性注入
上篇文章说了Spring IOC注入方法中的属性注入,也叫set注入。那这篇文章来说说构造器注入
构造器注入,顾名思义,就是在构造器里面注入依赖对象。那是怎么实现的呢?其实跟属性注入差不多,定义一个有参构造器,然后配置xml文件就行了。看代码
package com.spring.demo03.entity;
import com.spring.demo02.entity.Computer;
public class Programmer {
private Computer computer;
public Programmer(Computer computer){
this.computer = computer;
}
}
package com.spring.demo03.entity;
public class Computer {
private String brand;
private String color;
private String size;
public Computer(String brand, String color, String size) {
this.brand = brand;
this.color = color;
this.size = size;
}
}
上面两个类都有一个有参的构造器,接下来,在xml里面配置这两个bean,然后再配置构造器的参数值就可以了
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="programmer" class="com.spring.demo3.entity.Programmer">
<constructor-arg ref="computer"></constructor-arg>
</bean>
<!-- 构造器里面没有name字段,只有value,是根据构造器的方法参数顺序来定义的 -->
<bean id="computer" class="com.spring.demo3.entity.Computer">
<constructor-arg value="联想"></constructor-arg>
<constructor-arg value="红色"></constructor-arg>
<constructor-arg value="15.6寸"></constructor-arg>
</bean>
</beans>
以上,就是构造器注入,是不是很简单。跟属性注入有点相似,那平时该选择什么样的方法注入呢?一般来说,有强依赖关系的就用构造器注入,其他是可选属性的就用属性注入。不过,现在大部分都是用自动装配了,根本不用这么麻烦。下面一篇文章讲的就是自动装配方式