专栏首页cwl_Java经典面试题-构造方法注入和设值注入有什么区别?

经典面试题-构造方法注入和设值注入有什么区别?

请注意以下明显的区别:

  • 1.在设值注入方法支持大部分的依赖注入,如果我们仅需要注入int、string和long型的变量,我们不要用设值的方法注入。对于基本类型,如果我们没有注入的话,可以为基本类型设置默认值。在构造方法注入不支持大部分的依赖注入,因为在调用构造方法中必须传入正确的构造参数,否则的话为报错。
  • 2.设值注入不会重写构造方法的值。如果我们对同一个变量同时使用了构造方法注入又使用了设置方法注入的话,那么构造方法将不能覆盖由设值方法注入的值。很明显,因为构造方法尽在对象被创建时调用。
  • 3.在使用设值注入时有可能还不能保证某种依赖是否已经被注入,也就是说这时对象的依赖关系有可能是不完整的。而在另一种情况下,构造器注入则不允许生成依赖关系不完整的对象。
  • 4.在设值注入时如果对象A和对象B互相依赖,在创建对象A时Spring会抛出ObjectCurrentlyInCreationException异常,因为在B对象被创建之前A对象是不能被创建的,反之亦然。所以Spring用设值注入的方法解决了循环依赖的问题,因对象的设值方法是在对象被创建之前被调用的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java基础-面向对象(二)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • 快速学习-HBase优化

    在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷...

    cwl_java
  • SaaS-用户管理

    用户其实就是saas企业访问的员工,对企业员工完成基本的CRUD操作 表结构如下:

    cwl_java
  • Spring框架源码分析(IoC):Resource、ResourceLoader和容器之间的关系

    Resource接口定义了资源常见的操作,抽象出了一些通用方法,再由不同的实现类去自定义。直接上Resource源码:

    星如月勿忘初心
  • 神经网络架构搜索——可微分搜索(DARTS+)​

    DARTS 算法有一个严重的问题,就是当搜索轮数过大时,搜索出的架构中会包含很多的 skip-connect,从而性能会变得很差。文章把这个现象叫做 Colla...

    AI异构
  • 拿来主义:layPage分页插件的使用

    所谓插件,大概就是项目中可插可拔的比较小功能化的组件;这些功能组件若能力可及,自己也可以完成——也即自己造轮子,但翻看各种技术社区,相关领域的神人们往往会有更...

    用户1615728
  • Mysql 8 重要新特性 - CTE 通用表表达式

    dys
  • SAS-编程中的小技巧(八)

    很久没写公众号了...也积累很多想要分享的小技巧,奈何一直苦于工作繁忙,诸事繁多无暇分身...在即将要忘掉所有想分享的小技巧的前一秒想起了公众号还没写呢...最...

    Setup
  • Flutter基础widgets教程-CupertinoNavigationBar篇

    青年码农
  • 记一个复杂组件(Filter)的从设计到开发

    貌似在面试中,你如何设计一个 react/vue 组件,貌似已经是司空见惯的问题了。本文不是理论片,更多的是自己的一步步思考和实践。文中会有很多笔者的思考过程,...

    Nealyang

扫码关注云+社区

领取腾讯云代金券