Spring教程 - Spring Setter注入

2018-01-09 19:06 更新

Spring教程 - Spring Setter注入


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;
  }
}


XML配置

然后我們要?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)行

以下代碼顯示如何使用加載配置并運(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();
  }
}

輸出


Download Java2s_Spring_Setter_Injection.zip
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)