首页 > 其他分享 >关于Spring依赖注入一些理解和总结

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

时间:2023-04-16 15:11:31浏览次数:26  
标签:总结 AClass 依赖 Spring 实例 bclass BClass 构造函数 注入

  平常的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中。

标签:总结,AClass,依赖,Spring,实例,bclass,BClass,构造函数,注入
From: https://www.cnblogs.com/Noob-Green-Hand/p/17323301.html

相关文章

  • SpringCloud架构之注册中心/负载均衡组件搭建重点步骤
    我的GitHub地址:https://github.com/hiders1/cloud-demoGitHub的使用见:https://www.cnblogs.com/jinjiyese153/p/6796668.htmlVSC不见的话参考:https://blog.csdn.net/Ericjim/article/details/129215479 Nacos服务注册中心下载安装:1:Window系统远程下载GitHub地址:https://gi......
  • Spring AOP demo
    动态代理模式实现,比如可以在Bean的生命周期创建阶段,根据Pointcut判断当前bean是否满足切入条件,如果满足,再根据织入器ProxyFactory织入到JoinPoint,再根据bean创建代理对象名词JoinPoint:可以理解成系统中每一个可以应用aop的点,一般是指方法。spring中只支持方法,Pointcut:根据P......
  • Spring事务学习
    spring将事务管理的逻辑和数据访问的逻辑分开管理,但是每一个数据访问dao都需要同一个Connection对象,这时,spring会在事务开始的时候将connection设置到一个ThreadLocal中,在dao中,就从这个ThreadLocal中拿到Connection。/***声明式事务demo*/publicvoidtranfer(){......
  • 【Spring Cloud】SpringBoot、Spring Cloud、Spring Cloud Alibaba版本对应
    官方通告SpringBoot1.5.x及以下版本官方不再提供维护了,建议开发者选择使用SpringBoot2.0.x以上的版本,相对应的SpringCloud版本也最好不要使用。简单的查看版本信息:https://start.spring.io/actuator/infoSpringCloud对应的SpringBoot版本访问SpringCloud官网:https://spring......
  • dockerfile的使用,使用dockerfile部署springboot项目
    文章目录一、dockerfile概述1、dockerfile基础2、Docker执行Dockerfile的大致流程3、镜像、容器、dockerfile的关系二、dockerfile常用保留字1、FROM2、MAINTAINER与LABEL3、RUN4、EXPOSE5、WORKDIR6、USER7、ENV8、ADD9、COPY10、VOLUME11、CMD12、ENTRYPOINT三、使用dockerfile构......
  • 【Spring Cloud】第二代Spring Cloud核心组件
    第一代SpringCloud(主要是 SpringCloudNetflix)很多组件已经进入停更维护模式。第二代SpringCloud核心组件主要以SpringCloudAlibaba为主,SpringCloudAlibaba是由一些阿里巴巴的开源组件和云产品组成的,2018年,SpringCloudAlibaba正式入住了SpringCloud官方孵化器......
  • VBA语法总结
    为了控制Excel,学了些VBA,总结下语法,下文分为五部分:一、代码组织二、常用数据类型三、运算符四、控制流五、常用内置函数一、代码组织1.能写代码的地方有{模块,类模块}。2.代码中可以写的成员有{变量和常量,过程和函数}。对成员的访问修饰符有{public,private}3.写注释的方......
  • springcloud或springboot项目服务启动多个实例
    如果没有service,可以快捷键Alt+8,service标签没有信息,则.idea目录下的workspace.xml下替换或添加融化信息内容<componentname="RunDashboard"><optionname="configurationTypes"><set><optionvalue="SpringBootApplicationConfigurationType"/>&......
  • 4月14日多态的笔迹总结,
    1.声明的虚函数若等于零则叫纯虚函数。他不能被不重写继承,且可以代表一些实例化对象抽象的概念。2.对于虚函数接口继承的理解:普通函数是继承函数所有的东西,派生类就是为了调用这个函数而继承,而虚继承则是继承了这个函数的接口,函数的实现部分需要派生类去重写,从而达成多态。3.虚......
  • java: 程序包org.springframework.web.bind.annotation不存在(已解决)
    今天在创建了一个新的SpringBoot模块后,和往常一样将文件从别的模块中复制过来,然后运行鑫模块就报错了:java:程序包org.springframework.web.bind.annotation不存在,第一反应是将文件所在的包Rebuild一下,但是这次并没有起到作用。然后就想着清除一下缓存,进行步骤:File-->Invalidat......