springDI注入
一. 含义
DI:Dependency Injection,依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件中!!
二. 注入条件与方式
编写属性时提供该属性的set方法,提供注入口
// 编写成员属性,一定需要提供该属性的set方法private OrderDao orderDao;// 一定需要提供该属性的set方法,IOC容器底层就通过属性的set方法方式注入值public void setOrderDao(OrderDao orderDao) {this.orderDao = orderDao;}
// 消息private String msg;// 年龄private int age;
public void setMsg(String msg) {this.msg = msg;}
public void setAge(int age) {this.age = age;}<!--DI:依赖注入--><bean id="os" class="com.qcbyjy.service.OrderServiceImpl"><property name="orderDao" ref="od" /><property name="msg" value="你好" /><property name="age" value="30" /></bean><bean id="od" class="com.qcbyjy.dao.OrderDaoImpl"></bean>另一种注入方式:构造方法式注入
// 名称private String cname;// 金额private Double money;
public Car(String cname, Double money) {this.cname = cname;this.money = money;}<bean id="car" class="com.qcbyjy.demo2.Car"><constructor-arg name="cname" value="大奔" /><constructor-arg name="money" value="400000" /></bean>数组,集合(List,Set,Map),Properties等的注入
private String [] strs;public void setStrs(String[] strs) {this.strs = strs;}
private List<String> list;public void setList(List<String> list) {this.list = list;}
private Map<String,String> map;public void setMap(Map<String, String> map) {this.map = map;}
private Properties properties;public void setProperties(Properties properties) {this.properties = properties;}
<bean id="collectionBean" class="com.qcbyjy.demo3.CollectionBean"><property name="strs"><array><value>美美</value><value>小凤</value></array></property><property name="list"><list><value>熊大</value><value>熊二</value></list></property><property name="map"><map><entry key="aaa" value="老王"/><entry key="bbb" value="小王"/></map></property><property name="properties"><props><prop key="username">root</prop><prop key="password">123456</prop></props></property></bean>三. 多配置文件
在工厂创建实例的时候可以使用多个application.xml文件,有两种方式
1.在主配置文件中写入<import resource="applicationContext2.xml"/>,
例如如下代码则在application.xml中写入<import resource="applicationContext2.xml"/>
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"applicationContext.xml");2.使用多个配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"applicationContext.xml","applicationContext2.xml");