DI依赖注入的几种手段

简介: 本内容介绍了依赖注入的四种方式:构造器注入、接口注入、Setter注入和注解注入,并重点比较了Spring中的@Autowired与Java标准注解@Resource的区别,包括来源和依赖查找策略。
  • 构造器注入:通过调用类的构造函数来提供所需要的依赖项
  • 接口注入:依赖项通过特定接口的方式注入依赖,更强调依赖注入的契约化松耦合
  • Setter注入:通过调用类的Setter()方法来提供所需要的依赖项
  • 注解注入:通过@Autowired、@Resource等注解标记所需要注入的依赖项,然后由Spring容器来注入依赖,相较于其他注入方式更灵活

扩展:@Autowired和@Resource有什么区别

来源方面:

  • @Autowired来源于Spring框架,是Spring自带的注解 org.springframework.beans.factory.annotation.Autowired
  • @Resource是输入java的标准注解。javax.annotation.Resource

依赖查找策略方面:

  • @Autowired:通过byType(类型)匹配Bean。如果有多个相同类型的Bean会抛出NoUniqueBeanDefinitionException。存在多个相同类型的Bean时需要@Qualifier来指定Bean名称
  • @Resource:默认按照名字(byName)匹配Bean。若未指定name,则使用字段名或 Setter 方法参数名
目录
相关文章
|
存储 前端开发 安全
GET 和 POST 请求:理解它们之间的区别和适用场景
GET 和 POST 请求:理解它们之间的区别和适用场景
|
JSON 前端开发 Java
SpringBoot中Date格式化处理
日期格式化处理:从混乱到清晰,轻松转换日期格式
809 1
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
GANs、VAEs与Transformer的融合
本文深入解析了AIGC视频生成模型的技术原理,包括GAN、VAE、RNN和LSTM等关键技术的应用,并探讨了其在虚拟角色生成、广告内容创作和游戏剧情设计等领域的创新实践,同时提供了基于GAN的视频生成代码示例。
|
Java 存储
线程池的核心参数有哪些?
线程池七大核心参数:核心/最大线程数、线程保持时间及单位、阻塞队列、线程工厂与拒绝策略。
820 79
|
5月前
|
存储 缓存 NoSQL
如何解决缓存击穿?
缓存击穿是指热点数据失效时大量请求直接冲击数据库,可能导致系统崩溃。解决方案包括:永不过期策略避免缓存失效瞬间的穿透;互斥锁控制并发访问;热点预热提前刷新缓存;熔断降级在数据库压力大时返回默认值;二级缓存降低Redis压力。实际中常组合使用多种方案,如热点预热+互斥锁+熔断降级,以提升系统稳定性与性能。
685 0
|
5月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
994 0
|
5月前
|
机器学习/深度学习 运维 算法
关于具身机器人的视觉机制的建立
本文提出了一种类人视觉机制的具身机器人框架,通过“目标驱动、TOKEN预设、草图生成、异常处理”四大核心步骤,在动态环境中实现高效、灵活的任务执行能力。
182 0
|
Java 测试技术 Spring
Java 新手入门:依赖注入的 N 种姿势,总有一款适合你!
Java 新手入门:依赖注入的 N 种姿势,总有一款适合你!
559 2
|
5月前
|
存储 人工智能 自然语言处理
用Spring AI搭建本地RAG系统:让AI成为你的私人文档助手
想让AI帮你读懂PDF文档吗?本文教你用Spring AI和Ollama搭建一个本地RAG系统,让AI成为你的私人文档助手。无需GPU,无需云端API,只需几行代码,你的文档就能开口说话了!
|
5月前
|
前端开发 Java Spring
SpringMvC的执行流程
客户端发送HTTP请求,Spring MVC的前端控制器DispatcherServlet接收请求并调用HandlerMapper进行映射,返回包含Controller和拦截器的执行链。控制器执行逻辑后返回ModelAndView,前端控制器再调用ViewResolver解析视图并渲染HTML页面,最终返回给客户端。
262 0

热门文章

最新文章