Spring Setter注入是最流行和簡單的依賴注入方法,它將通過setter方法注入依賴關系。
在Setter依賴注入中,IoC容器注入一個Java Bean的依賴通過JavaBean風格的setter方法。
Java Bean的setters公開了IoC容器可以管理的依賴關系。
在實踐中,Setter注射是最廣泛使用的注射機制,它是一個最簡單的IoC機制來實現(xiàn)。
假設我們定義了以下接口和Java bean。
package com.www.o2fo.common; public interface Printer { public void print(); }
之后,我們將創(chuàng)建CSV打印機,將輸出CSV格式的數(shù)據(jù)。CSV打印機實現(xiàn)打印機接口。
package com.www.o2fo.common; public class CSVPrinter implements Printer { public void print(){ System.out.println("Csv Output Printer"); } }
然后是時間創(chuàng)建JSON打印機將輸出JSON格式的消息。JSON打印機還實現(xiàn)了打印機接口。
package com.www.o2fo.common; public class JSONPrinter implements Printer { public void print(){ System.out.println("Json Output Printer"); } }
通過使用Spring依賴注入(DI),我們可以在Spring配置XML文件中聲明Java Bean。 然后在xml文件中連接Java Bean。這樣Spring可以使我們的打印機松散耦合到不同的打印機實現(xiàn)。
通過使用Spring依賴注入(DI),我們可以在Spring配置XML文件中聲明Java Bean。 然后在xml文件中連接Java Bean。這樣Spring可以使我們的打印機松散耦合到不同的打印機實現(xiàn)。...
package com.www.o2fo.common; public class OutputHelper { Printer outputGenerator; public void print(){ outputGenerator.print(); } public void setOutputGenerator(Printer outputGenerator){ this.outputGenerator = outputGenerator; } }
然后我們要創(chuàng)建一個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.o2fo.common.OutputHelper"> <property name="outputGenerator" ref="csvPrinter" /> </bean> <bean id="csvPrinter" class="com.www.o2fo.common.CSVPrinter" /> <bean id="jsonPrinter" class="com.www.o2fo.common.JSONPrinter" /> </beans>
以下兩個bean標簽在Spring配置xml文件中聲明了兩個Java Bean。
在聲明之后,我們可以使用id值來引用Java Bean。
<bean id="csvPrinter" class="com.www.o2fo.common.CSVPrinter" /> <bean id="jsonPrinter" class="com.www.o2fo.common.JSONPrinter" />
以下xml bean標記聲明了 OutputHelper
和通過使用屬性標記通過setter注入注入依賴。
<bean id="outputHelper" class="com.www.o2fo.common.OutputHelper"> <property name="outputGenerator" ref="csvPrinter" /> </bean>
在上面的代碼中,我們只是注入一個“com.www.o2fo.common.CSVPrinter"bean通過setter方法setOutput Generator轉(zhuǎn)換為“Output Helper"對象。
以下代碼顯示如何使用加載配置并運行它。
package com.www.o2fo.common; 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(); } }
輸出
更多建議: