setter注入,是通过在通过构造器、静态工厂或实例工厂实例好Bean后,通过调用Bean类的setter方法进行注入依赖。
spring中 bean配置文件中:
<!-- 通过setter方式进行依赖注入 -->
<bean id="setterBean" class="com.spring.service.impl.HelloApiImpl2">
<property name="message" value="Hello World!"/>
<property name="index" value="1"/>
</bean>
传统setter方法:
HelloApi helloApi=new HelloApiImpl2()
helloApi.setMessage("hello world");
helloApi.setIndex(1);
setter注入方式:
setter注入方式只有一种根据setter名字进行注入:
<property name="message" value="Hello World!"/>
name是setter注入名字,value是注入的常量值。
1.创建HelloApi接口类:
package com.spring.service;
public interface HelloApi {
public void sayHello();
}
2.创建实现HelloApi接口HelloApiImpl2类:
package com.spring.service.impl;
import com.spring.service.HelloApi;
public class HelloApiImpl2 implements HelloApi {
private String message;
private int index;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
@Override
public void sayHello() {
System.out.println(index+":"+message);
}
}
3.创建Bean 配置spring-setterDependencyInject.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">
<!-- 通过setter方式进行依赖注入 -->
<bean id="setterBean" class="com.spring.service.impl.HelloApiImpl2">
<property name="message" value="Hello World!"/>
<property name="index" value="1"/>
</bean>
</beans>
4.创建SetterDependencyInjectTest测试类:
package com.spring.test;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.spring.service.HelloApi;
public class SetterDependencyInjectTest {
@Test
public void setterDI(){
BeanFactory beanFactory=new ClassPathXmlApplicationContext("spring-setterDependencyInject.xml");
HelloApi bean=beanFactory.getBean("setterBean",HelloApi.class);
bean.sayHello();
}
}
5.测试结果:
1:Hello World!