关于Spring依赖注入一些理解和总结

  平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做。

  我们常用的注入方式无非就是三种:属性注入、构造器注入、setter方法注入。

  1.属性注入:

    最常见的一种注入方法

    示例:

@Service
public class AClass {
    @Autowired
    BClass bclass;
    //...
}

     常用的注入注解还有@Resource和@Qualifier等。

  2.构造器注入:

    示例:

@Service
public class AClass {
    BClass bclass;
    @Autowired
    public AClass(BClass bclass){
        this.bclass = bclass;
    }
}    

 

     当创建AClass对象时,调用其构造器,而其构造器上加有注解@Autowired,所以先从池中找到BClass的Bean对象注入到构造方法中,然后再调用此构造函数,也就是先将构造函数用到的参数注入,再调用构造函数。

    如果类中只有一个构造函数,则不需要加@Autowired,在创建时会自动调用这个唯一的构造函数,如果有多个构造函数,则需要加上@Autowired来明确调用哪个构造函数。

  3.setter方法注入:

    不推荐使用setter方法注入,太过臃肿。

    实例:

@Service
public class AClass {
    BClass bclass;
    @Autowired
    publicviod setBClass(BClass bclass){
        this.bclass = bclass;
    }
}

    当创建AClass对象时,先去调用AClass的构造器,发现AClass与BClass有依赖关系,然后使用setter方法先将bclass实例化,然后再注入到AClass中。

作者:Noob-Green-Hand

出处:https://www.cnblogs.com/Noob-Green-Hand/p/17323301.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   StormArcita  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示