Spring教程 - Spring Setter注入

2018-01-09 19:06 更新

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
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号