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