• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Spring依赖注入的三种方式实例详解

    Spring依赖注入(DI)的三种方式,分别为:

    1. 接口注入

    2. Setter方法注入

    3. 构造方法注入

    下面介绍一下这三种依赖注入在Spring中是怎么样实现的。

    首先我们需要以下几个类:

    接口 Logic.java

    接口实现类 LogicImpl.java

    一个处理类 LoginAction.java

    还有一个测试类 TestMain.java

    Logic.java如下:

    package com.spring.test.di;
    
    public interface Logic {
    
    public String getName();
    }
    
    

    LogicImpl.java如下:

    package com.spring.test.di;
    
    public class LogicImpl implements Logic{
    
    public String getName(){
    
      return "fengyun";
    
    }
    }
    
    

    TestMain.java

    package com.spring.test.di;
    
    import org.springframework.context.ApplicationContext;
    
    import org.springframework.context.support.FileSystemXmlApplicationContext;
    
    public class TestMain {
    
    /**
    
     * @param args
    
     */
    
    public static void main(String[] args) {
    
    
    
      // 得到ApplicationContext对象
    
      ApplicationContext ctx = new FileSystemXmlApplicationContext(
    
         "applicationContext.xml");
    
      // 得到Bean
    
      LoginAction loginAction = (LoginAction) ctx.getBean("loginAction");
    
    
    
      loginAction.execute();
    
    }
    }
    
    

    LoginAction.java 会根据使用不同的注入方法而稍有不同

    下面按照注入的方法来看LoginAction.java类

    Setter方法注入:

    package com.spring.test.di;
    
    public class LoginAction {
    
    private Logic logic;
    
    
    
    public void execute() {
    
      String name = logic.getName();
    
      System.out.print("My Name Is " + name); 
    
    }
    
    
    
    /**
    
     * @return the logic
    
     */
    
    public Logic getLogic() {
    
      return logic;
    
    }
    
    
    
    /**
    
     * @param logic
    
     *      the logic to set
    
     */
    
    public void setLogic(Logic logic) {
    
      this.logic = logic;
    
    }
    }
    
    

    定义了一个Logic 类型的变量 logic, 在LoginAction并没有对logic 进行实例化,而只有他对应的setter/getter方法,因为我们这里使用的是Spring的依赖注入的方式

    applicationContext.xml配置文件如下:

    现在可以运行testMain.java了,我们可以看到控制台打出了 My Name Is fengyun

    OK了,这就是spring的setter方法注入,非常简单

    下面我们来看看构造方法注入

    顾名思义,构造方法注入,就是我们依靠LoginAction的构造方法来达到DI的目的,如下所示:

    LoginAction.java

    package com.spring.test.di;
    
    public class LoginAction {
    
    private Logic logic;
    
    
    
    public LoginAction(Logic logic) {
    
      this.logic = logic;
    
    }
    
    
    
    public void execute() {
    
      String name = logic.getName();
    
      System.out.print("My Name Is " + name);
    
    }
    }
    
    

    这里我们添加了一个LoginAction的构造方法

    applicationContext.xml配置文件如下:

    我们使用constructor-arg来进行配置, index属性是用来表示构造方法中参数的顺序的,如果有多个参数,则按照顺序,从 0,1…来配置

    我们现在可以运行testMain.java了,结果跟使用Setter方法注入完全一样.

    其中需要注意一点有:构造函数有多个参数的话,如:参数1,参数2,而参数2依赖于参数1,这中情况则要注意构造函数的顺序,必须将参数1放在参数2之前。

    下面继续说说我们不常用到的接口注入,还是以LogicAction为例,我们对他进行了修改,如下所示:

    LogicAction.java

    package com.spring.test.di;
    
    public class LoginAction {
    
    private Logic logic;
    
    
    
    public void execute() {
    
      try {
    
        Object obj = Class.forName("com.spring.test.di.LogicImpl")
    
           .newInstance();
    
        logic = (Logic) obj;
    
        String name = logic.getName();
    
        System.out.print("My Name Is " + name);
    
      } catch (Exception e) {
    
        e.printStackTrace();
    
      }
    
    }
    }
    
    

    配置文件:

    对于接口注入这种方式,以上也只是我个人理解,不知道是否有什么问题。呵呵

    我们最常用就是Setter和构造函数这两种注入方法,至于他们各自的对比,我想在只要baidu一下就可以有清楚的答案了。

    对于Spring的依赖注入,最重要的就是理解他的,一旦理解了,将会觉得非常的简单。无非就是让容器来给我们实例化那些类,我们要做的就是给容器提供这个接口,这个接口就我们的set方法或者构造函数了。

    如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    您可能感兴趣的文章:
    • Spring入门配置和DL依赖注入实现图解
    • spring依赖注入原理与用法实例分析
    • 详解Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理
    • Spring bean的实例化和IOC依赖注入详解
    • SpringBoot的拦截器中依赖注入为null的解决方法
    • 浅谈Spring IoC容器的依赖注入原理
    • 理解Spring中的依赖注入和控制反转
    • Spring quartz Job依赖注入使用详解
    • Spring依赖注入的三种方式小结
    • 因Spring AOP导致@Autowired依赖注入失败的解决方法
    • Spring依赖注入的两种方式(根据实例详解)
    • Spring 依赖注入的几种方式详解
    • Spring 依赖注入实现示例
    上一篇:jsp文件下载功能实现代码
    下一篇:详解Spring的核心机制依赖注入
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Spring依赖注入的三种方式实例详解 Spring,依赖,注入,的,三种,