Spring教程 - Spring Setter注入
Spring教程 - Spring Setter注入
Spring Setter注入是最流行和简单的依赖注入方法,它将通过setter方法注入依赖关系。
在Setter依赖注入中,IoC容器注入一个Java Bean的依赖通过JavaBean风格的setter方法。
Java Bean的setters公开了IoC容器可以管理的依赖关系。
在实践中,Setter注射是最广泛使用的注射机制,它是一个最简单的IoC机制来实现。
例子
假设我们定义了以下接口和Java bean。
package com.www.w3cschool.cnmon; public interface Printer { public void print(); }
之后,我们将创建CSV打印机,将输出CSV格式的数据。CSV打印机实现打印机接口。
package com.www.w3cschool.cnmon; public class CSVPrinter implements Printer { public void print(){ System.out.println("Csv Output Printer"); } }
然后是时间创建JSON打印机将输出JSON格式的消息。JSON打印机还实现了打印机接口。
package com.www.w3cschool.cnmon; public class JSONPrinter implements Printer { public void print(){ System.out.println("Json Output Printer"); } }
通过使用Spring依赖注入(DI),我们可以在Spring配置XML文件中声明Java Bean。 然后在xml文件中连接Java Bean。这样Spring可以使我们的打印机松散耦合到不同的打印机实现。
通过使用Spring依赖注入(DI),我们可以在Spring配置XML文件中声明Java Bean。 然后在xml文件中连接Java Bean。这样Spring可以使我们的打印机松散耦合到不同的打印机实现。...
package com.www.w3cschool.cnmon; public class OutputHelper { Printer outputGenerator; public void print(){ outputGenerator.print(); } public void setOutputGenerator(Printer outputGenerator){ this.outputGenerator = outputGenerator; } }
XML配置
然后我们要创建一个Spring bean配置文件并在此处声明所有Java对象依赖关系。
<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-2.5.xsd"> <bean id="outputHelper" class="com.www.w3cschool.cnmon.OutputHelper"> <property name="outputGenerator" ref="csvPrinter" /> </bean> <bean id="csvPrinter" class="com.www.w3cschool.cnmon.CSVPrinter" /> <bean id="jsonPrinter" class="com.www.w3cschool.cnmon.JSONPrinter" /> </beans>
以下两个bean标签在Spring配置xml文件中声明了两个Java Bean。
在声明之后,我们可以使用id值来引用Java Bean。
<bean id="csvPrinter" class="com.www.w3cschool.cnmon.CSVPrinter" /> <bean id="jsonPrinter" class="com.www.w3cschool.cnmon.JSONPrinter" />
以下xml bean标记声明了 OutputHelper
和通过使用属性标记通过setter注入注入依赖。
<bean id="outputHelper" class="com.www.w3cschool.cnmon.OutputHelper"> <property name="outputGenerator" ref="csvPrinter" /> </bean>
在上面的代码中,我们只是注入一个“com.www.w3cschool.cnmon.CSVPrinter"bean通过setter方法setOutput Generator转换为“Output Helper"对象。
加载配置和运行
以下代码显示如何使用加载配置并运行它。
package com.www.w3cschool.cnmon; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext( "SpringBeans.xml"); OutputHelper output = (OutputHelper)context.getBean("outputHelper"); output.print(); } }
输出
Download Java2s_Spring_Setter_Injection.zip
更多建议: