一、依赖注入方式
- setXxx()方法注入
- 构造函数注入
- 工厂方式注入
1、setXxx()方法注入
要求POJO类提供默认的构造函数和set方法。
public class Communication {
private Messaging messaging;
public void setMessaging(Messaging messaging){
this.messaging = messaging;
}
public void communicate(){
messaging.sendMessage();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<bean id="activeMqMessaging" class="com.websystique.spring.domain.impl.ActiveMQMessaging" />
<bean id="communication" class="com.websystique.spring.Communication">
<property name="messaging">
<ref bean="activeMqMessaging" />
</property>
</bean>
</beans>
2、构造函数注入
public class Communication {
private Encryption encryption;
public Communication(Encryption encryption){
this.encryption = encryption;
}
public void communicate(){
encryption.encryptData();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<bean id="rsaEncryption" class="com.websystique.spring.domain.impl.RSAEncryption" />
<bean id="communication" class="com.websystique.spring.Communication">
<constructor-arg type="com.websystique.spring.domain.Encryption">
<ref bean="rsaEncryption" />
</constructor-arg>
</bean>
</beans>
3、工厂方法注入
(1)非静态工厂方法
public class CarFactory {
public Car createHongQiCar(){
Car car = new Car();
car.setBrand("红旗CA72");
return car;
}
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 工厂方法-->
<bean id="carFactory" class="com.baobaotao.ditype.CarFactory" />
<bean id="car5" factory-bean="carFactory" factory-method="createHongQiCar">
</bean>
</beans>
(2)静态工厂方法
public class CarFactory {
public static Car createHongQiCar(){
Car car = new Car();
car.setBrand("红旗CA72");
return car;
}
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="car6" class="com.baobaotao.ditype.CarFactory"
factory-method="createHongQiCar"></bean>
</beans>