大致分为:Field 注入、构造注入、setter 注入

其中 Field 注入被认为有害的:

1. 违反了单一原则

当一个 class 中有多个依赖时,如果仅仅使用 Field 注入,则看不出有很多依赖关系。而使用构造注入\setter  注入,可以观察到,这样我通常会对代码进行重构。

2. 依赖隐藏

使用 DI 容器,类本身不再管理其依赖,但是应当明确地通过 public 接口方法\构造器显示相关依赖。

3. DI 容器耦合

因为没有提供相关方法/构造函数手动注入依赖,无法独立于容器之外实例化。

参考文档


https://stackoverflow.com/questions/39890849/what-exactly-is-field-injection-and-how-to-avoid-it

https://www.vojtechruzicka.com/field-dependency-injection-considered-harmful/

转载于:https://www.cnblogs.com/lemos/p/9608919.html

Spring 依赖注入中 Field 注入的有害性相关推荐

  1. Spring依赖查找中的常见异常

    文章目录 BeansException的子接口 NoSuchBeanDefinitionException不存在要查找的Bean NoUniqueBeanDefinitionException 容器中 ...

  2. Spring官方为什么建议构造器注入?

    以下文章来源方志朋的博客,回复"666"获面试宝典 前言 本章的内容主要是想探讨我们在进行 Spring 开发过程当中,关于依赖注入的几个知识点.感兴趣的读者可以先看下以下问题: ...

  3. Spring依赖注入提示:Field injection is not recommended

    前言 1.介绍 今天在调试代码,发现IDEA提示@Autowired为警告(如上图所示),信息为:Field injection is not recommended.什么意思,Spring官方给的说 ...

  4. Spring Boot 单例模式中依赖注入问题

    在日常项目开发中,单例模式可以说是最常用到的设计模式,项目也常常在单例模式中需要使用 Service 逻辑层的方法来实现某些功能.通常可能会使用 @Resource 或者 @Autowired 来自动 ...

  5. Spring依赖注入的方式、类型、Bean的作用域、自动注入、在Spring配置文件中引入属性文件...

    1.Spring依赖注入的方式 通过set方法完成依赖注入 通过构造方法完成依赖注入 2.依赖注入的类型 基本数据类型和字符串 使用value属性 如果是指向另一个对象的引入 使用ref属性 User ...

  6. java spring getbean_spring依赖注入中获取JavaBean

    一.这个接口有什么用? 当一个类实现了这个接口(ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean.换句话说,就是这个类可以 ...

  7. Spring: 依赖注入的实现

    上一篇中已经实现了通过IOC容器创建BEAN并管理, 在实际开发中BEAN之间的依赖是不可避免的. 例: 用户模块依赖于通用模块, 订单模块同时依赖于用户模块和通用模块等等. Spring提供了依赖注 ...

  8. diy实现spring依赖注入

    [README] 本文diy代码实现了 spring 依赖注入,一定程度上揭示了依赖注入原理: [1]控制反转-Inversion of Control 是一种编码思想,简而言之就是 应用程序A可以使 ...

  9. Spring依赖注入–字段vs设置器vs构造函数注入

    欢迎使用Spring Dependency Injection –字段,设置器,构造函数注入教程. 了解场注入 , 二传手注入和构造函数注入之间的区别. 借助代码示例,我们将看到使用每个示例的好处以及 ...

  10. spring依赖注入_Spring3:类型安全依赖项注入

    spring依赖注入 在从Spring跳到类型安全依赖注入之前,我想讨论一下我们之前所做的方式. 我们一直在借助Spring的Autowired注释按类型使用依赖项注入. 像这样的东西会注入Sprin ...

最新文章

  1. ACM网络赛金华赛区的一道关于树的题:Family Name List
  2. LiveVideoStack线上交流分享 (十五) —— 熟悉技术的边界,实现1+1+13
  3. 外部引用CSS中 link与@import的区别
  4. linux命令 ps -ef 的含义
  5. leetcode —— 面试题 16.19. 水域大小
  6. 总用量的统计_每月公开使用量!广州市开启机制砂信息采集工作
  7. 团队文化之舒适区和挑战区
  8. html微信窗口阻止滚动条,微信浏览器禁止页面下拉查看网址(不影响页面内部scroll)...
  9. [AndroidO] [RK3399] -- CH341驱动移植
  10. [越狱相关] 优化IPhone的启动进程守护进程(Launch daemons) 优化内存 加快手机启动速度
  11. 慎用Application.DoEvents( )
  12. Android中图片压缩分析(上)
  13. Flask: 总是报too many values unpacked
  14. MessageSource简介
  15. jQuery弹幕插件
  16. linux显示某一日期是第几天,如果已经知道一年中的第几天,能够用linux中date显示出所对应日期吗?比如知道今天是这一年的第...
  17. 为了疫情防控,发短信可查自己的行踪轨迹,是什么技术在帮忙?
  18. 【can总线】stm32的can控制器
  19. 【雕爷学编程】Arduino动手做(74)---6MV2飞控GPS模块
  20. java将excel文件下载到本地

热门文章

  1. 公众号内打开提示404_微信公众号文章“号内搜”新功能玩法
  2. NYOJ 972(蓝桥杯) 核桃的数量
  3. 【PATL1-46】整除光棍(模拟除法)---水题
  4. java radix sort_Java RadixSort
  5. ant 日期组件中文_Vue3开源组件库,今天“它们”来了
  6. java正则过滤小括号,java正则表达式获取大括号小括号内容并判断数字和小数亲测可用...
  7. jsp注册里密码强弱怎么弄_JavaScript注册时密码强度校验代码
  8. android图像与动画处理,在Android和iPhone上对照片进行动画处理的7种最佳应用 | MOS86...
  9. 算法: 唯一路径62. Unique Paths
  10. jxl java mer_导出报表出错,有没有大神懂得