spring的依赖注入两种方式:Setter-based Dependency Injection(set方法去注入) 和 Constructor-based Dependency Injection(通过构造函数)
1、Setter-based Dependency Injection:
set方法注入与属性名字无关,只有bean对象注入的name名字有关。
package com.it.app.service;
public class ServiceImpl3 {
//set方法注入与属性名字无关,只有bean对象注入的name名字有关。
private ServiceImpl1 oned;
private ServiceImpl2 twod;
private int elementd;
public void setElement(int elementd) {
this.elementd = elementd;
}
public void setOne(ServiceImpl1 oned) {
this.oned = oned;
}
public void setTwo(ServiceImpl2 twog) {
this.twod = twog;
}
}
xml文件内容:
<?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.xsd">
<!--通过set注入-->
<bean id="example" class="com.it.app.service.ServiceImpl3">
<!--该name名称需与set方法名保持一致-->
<property name="one">
<ref bean="serviceImpl1"/>
</property>
<property name="two">
<ref bean="serviceImpl2"/>
</property>
<property name="element" value="1"></property>
</bean>
<bean id="serviceImpl1" class="com.it.app.service.ServiceImpl1"></bean>
<bean id="serviceImpl2" class="com.it.app.service.ServiceImpl2"></bean>
</beans>
2、Constructor-based Dependency Injection:
package com.it.app.service;
public class ServiceImpl4 {
private ServiceImpl1 oned;
private ServiceImpl2 twod;
private int elementd;
public ServiceImpl4(ServiceImpl1 oned,ServiceImpl2 twod, int elementd) {
this.twod = twod;
this.elementd = elementd;
this.twod = twod;
}
}
xml文件内容:
<?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.xsd">
<!--通过set注入-->
<bean id="example" class="com.it.app.service.ServiceImpl3">
<property name="one">
<ref bean="serviceImpl1"/>
</property>
<property name="two">
<ref bean="serviceImpl2"/>
</property>
<property name="element" value="1"></property>
</bean>
<!--通过构造函数-->
<bean id="serviceImpl4" class="com.it.app.service.ServiceImpl4">
<constructor-arg>
<ref bean="serviceImpl1"></ref>
</constructor-arg>
<constructor-arg ref="serviceImpl2"></constructor-arg>
<constructor-arg type="int" value="1"></constructor-arg>
</bean>
<bean id="serviceImpl1" class="com.it.app.service.ServiceImpl1"></bean>
<bean id="serviceImpl2" class="com.it.app.service.ServiceImpl2"></bean>
</beans>