spring依赖注入

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

@Autowired
private StudentDao studentDao; // Autowires by type. Injects the instance whose type is StudentDao

但是,如果我们有一种类型的多个Spring bean,那么我们将使用Qualifier Annotation和Autowired,实际上是按名称注入spring bean。

具有以下内容的应用程序上下文:

<bean id="studentDao1" class="StudentDao" />
<bean id="studentDao2" class="StudentDao" />

因此,现在如果我们有两个StudentDao实例(studentDao1和studentDao2),则可以按名称注入spring bean。

@Autowired
@Qualifier("studentDao1")
private StudentDao studentDao1;@Autowired
@Qualifier("studentDao2")
private StudentDao studentDao2;

使用JSR-250指定的资源注释可以实现相同的目的。 因此,我们可以使用此注释将bean注入到字段或单参数方法中。 自动装配比Resource灵活得多,因为它可以与多参数方法以及构造函数一起使用。
我们可以通过以下方式使用Resource注解按名称注入bean。

@Resource
private StudentDao studentDao1;

Spring 3中的类型安全依赖项注入

使用@Qualifier定义自定义注释

要在不指定名称的情况下识别注入的bean,我们需要创建一个自定义注释。 这等效于在CDI中使用JSR 330批注(Inject)的过程。

@Target({ElementType.Field, ElementType.Parameter})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @Interface Student  {
}

现在将此自定义注释分配给EntityDao接口的实现

@Component
@Student
public class StudentDao implements EntityDao   {
}

@Component告诉Spring这是一个bean定义。 每当使用EntityDao的引用时,Spring IoC都使用@Student注释将StudentDao标识为EntityDao的实现。
使用@Autowired和自定义限定符注入bean
这样的事情。

@Autowired
@Student
private EntityDao studentDao; // So the spring injects the instance of StudentDao here.

这减少了字符串名称的使用,因为字符串名称可能会拼写错误并且难以维护。

参考: 如何在Spring 3中使用类型安全依赖项注入? 来自我们的JCG合作伙伴 Saurab Parakh在Coding is Cool博客上。

翻译自: https://www.javacodegeeks.com/2012/05/spring-3-type-safe-dependency-injection.html

spring依赖注入

spring依赖注入_Spring3:类型安全依赖项注入相关推荐

  1. Spring3:类型安全依赖项注入

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

  2. 领域驱动设计之领域模型_在领域驱动的设计,贫乏的领域模型,代码生成,依赖项注入等方面……...

    领域驱动设计之领域模型 埃里克·埃文斯(Eric Evans)已制定了域驱动设计(DDD). Martin Fowler是DDD的大力支持者和拥护者. 这些都是非凡的名字,几乎可以肯定的是,他们正在支 ...

  3. 在领域驱动的设计,贫乏的领域模型,代码生成,依赖项注入等方面……

    埃里克·埃文斯(Eric Evans)已制定了什么是域驱动设计(DDD). Martin Fowler是DDD的大力支持者和拥护者. 这些都是非凡的名字,几乎可以肯定的是,他们正在支持一些有价值的东西 ...

  4. Spring IoC是如何进行依赖注入的

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 依赖注入(DI) DI(Dependency Injection) ...

  5. spring常用的三种依赖注入方式

    平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程 ...

  6. spring源码分析第三天------spring核心IOC容器和依赖注入原理

    基于XML的依赖注入 1.依赖注入发生的时间 当 Spring IOC 容器完成了 Bean 定义资源的定位.载入和解析注册以后,IOC 容器中已经管理类 Bean 定义的相关数据,但是此时 IOC ...

  7. Spring源码系列:依赖注入(二)createBean

    在Spring源码系列:依赖注入(一)(AbstractBeanFactory-getBean)最后说道getBean是依赖注入的起点,bean的创建都是通过createBean来完成具体的创建的.c ...

  8. 来谈谈Spring构造函数注入的循环依赖问题

    作者:服务端开发 blog.csdn.net/u010013573/article/details/90573901 一.循环依赖 spring的循环依赖主要是指两个类相互之间通过@Autowired ...

  9. Spring框架IOC容器,依赖注入,控制反转

    Spring的配制文件中 以上标签的属性id是不是必须的?不是必须的,如果定义id,那么其它的bean就可以通过此name来引用id 创建beans.xml <?xml version=&quo ...

最新文章

  1. navigation的pushViewController卡顿问题
  2. 20 ubuntu 中科大源_Linux-Ubuntu简单配置-换国内源-中文显示
  3. Flink从入门到精通100篇(十八)-CentOS环境中搭建Flink分布式集群
  4. 春节快乐!iPhone11 128G抱回家!
  5. 读《嵌入式系统项目分析入门与实践》⑤
  6. cesium面板动态显示并跟随移动
  7. 设置TDSAuthenticationManager属性对DataSnap服务端的接口授权
  8. 2019年新款iPhone高清渲染视频来了 强迫症慎点...
  9. 台式计算机的速度,USB3.0有多快?平民级最简单测试告诉你
  10. mtd_utils交叉编译
  11. 碰到的TypeError--记录
  12. 局域网的主机如何连接外网
  13. Dagger2和MVParms的学习
  14. 大数据技术原理与应用 第1章 大数据概述
  15. idea更换源_IDEA修改Maven替换阿里源
  16. 资料:线性代数与空间解析几何知识点全汇总
  17. UML应用的三重境界
  18. php 图片抠图,php 图像处理 抠图,生成背景透明png 图片
  19. 小小知识点(三十七)OFDM和OFDMA的区别以及OFDMA与SC-FDMA的区别
  20. Python基础知识笔记

热门文章

  1. 服务高可用:幂等性设计
  2. 使用Java 8 Stream像操作SQL一样处理数据(上)
  3. 数据结构(一)之链表
  4. 加油四班!加油佟穆!我们的征途是星辰大海!!!
  5. 多功能语音播放器上线啦~
  6. (转-这篇文章非常棒) Thread的中断机制(interrupt)
  7. redis集群3种模式
  8. java本地监听zk服务器节点【动态上下线】
  9. 转:并发与并行的区别
  10. java监控数据库性能_Java:GraalVM数据库流性能