zoukankan      html  css  js  c++  java
  • Spring使用Setter依赖注入

    一个简单的Spring例子来展示如何通过setter方法注入依赖项,最常用DI方法注入bean。

       1. IOutputGenerator

      接口和实现类  
    1 package faj.test.javademo.set;
    2 
    3 /**
    4  * Created by JiaGao on 2016/7/30.
    5  */
    6 public interface IOutputGenerator {
    7     void generateOutput();
    8 }
     1 package faj.test.javademo.set;
     2 
     3 /**
     4  * Created by JiaGao on 2016/7/30.
     5  */
     6 public class CsvOutputGenerator implements IOutputGenerator {
     7     @Override
     8     public void generateOutput() {
     9         System.out.println("This is Csv Output Generator");
    10     }
    11 }

       2. Helper类

    一个辅助类,之后使用Spring 来注入 IOutputGenerator。  
     1 package faj.test.javademo.set;
     2 
     3 public class OutputHelper {
     4     private IOutputGenerator outputGenerator;
     5     public void generateOutput() {
     6         outputGenerator.generateOutput();
     7     }
     8     //DI via setter method
     9     public void setOutputGenerator(IOutputGenerator outputGenerator) {
    10         this.outputGenerator = outputGenerator;
    11     }
    12 }

       3. Spring配置

    配置Bean在Spring配置文件,并引用Bean “CsvOutputGenerator” 到 “OutputHelper”,通过property 和 ref 标签。

    在这种情况下,Spring将通过setter方法注入Bean “CsvOutputGenerator” 到“OutputHelper”类,

    “setOutputGenerator(IOutputGenerator outputGenerator)”.  

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:context="http://www.springframework.org/schema/context"
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     5     xsi:schemaLocation="http://www.springframework.org/schema/beans
     6            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
     7            http://www.springframework.org/schema/context
     8                http://www.springframework.org/schema/context/spring-context-2.5.xsd">
     9     <bean id="CsvOutputGenerator" class="faj.test.javademo.set.CsvOutputGenerator" />
    10 
    11     <bean id="OutputHelper" class="faj.test.javademo.set.OutputHelper">
    12         <property name="outputGenerator" ref="CsvOutputGenerator" />
    13     </bean>
    14 </beans>

       4. 执行结果

    载入一切东西,并运行它。  
     1 package faj.test.javademo.set;
     2 
     3 import org.springframework.context.ApplicationContext;
     4 import org.springframework.context.support.ClassPathXmlApplicationContext;
     5 
     6 /**
     7  * Created by JiaGao on 2016/7/30.
     8  */
     9 public class App1 {
    10     public static void main(String[] args) {
    11         ApplicationContext context = new ClassPathXmlApplicationContext("faj/test/javademo/set/applicationContext.xml");
    12         OutputHelper output = (OutputHelper)context.getBean("OutputHelper");
    13         output.generateOutput();
    14     }
    15 }

       输出结果

    This is Csv Output Generator
     
  • 相关阅读:
    [矩阵快速幂专题]
    [hdoj6415 Rikka with Nash Equilibrium][dp]
    [codeforces][dp]
    [2019年湘潭大学程序设计竞赛(重现赛)H chat][背包dp]
    [一道区间dp][String painter]
    [hdoj4578][多延迟标记的线段树]
    [cf1138BCircus][枚举,列等式]
    [Assign the task][dfs序+线段树]
    Codeforces round 419 div2 补题 CF 816 A-E
    Educational Codeforces Round 23 A-F 补题
  • 原文地址:https://www.cnblogs.com/faunjoe88/p/5721467.html
Copyright © 2011-2022 走看看