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

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依赖注入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux系统查看当前安装字库,linux下怎样安装中文字体?

1、首先禁用xfs服务器。 运行Setup命令&#xff0c;在服务项中中止xfs随系统运行的特性。之所以禁用xfs服务器主要是因为xfs会自动更新字体目录下的fonts.dir文件&#xff0c;从而影响我们所做的修改。2、将选中的字体字库拷贝到相关的目录。 一般选用simsun.ttf为基本的字体(据…

Spark Shell的简单使用

简介 Spark shell是一个特别适合快速开发Spark原型程序的工具&#xff0c;可以帮助我们熟悉Scala语言。即使你对Scala不熟悉&#xff0c;仍然可以使用这个工具。Spark shell使得用户可以和Spark集群交互&#xff0c;提交查询&#xff0c;这便于调试&#xff0c;也便于初学者使用…

linux vps 命令,CentOS最常用Linux vps操作命令整理大全

vps用的centos系统&#xff0c;为了方便查看整理了一些Linux常用命令&#xff1b;忘记的时候翻出来看看&#xff0c;不用二次浪费时间东找西找浪费时间&#xff1b;文件和目录:# cd /home 进入 ‘/home’ 目录# cd .. 返回上一级目录# cd ../.. 返回上两级目录# cd – 返回上次…

Java的20年:重大事件的时间表

翻译自: https://www.javacodegeeks.com/2015/12/2-decades-java-timeline-notable-events.html

w10系统自带linux系统,win10下,内置linux系统的安装和体验,你造吗?

原标题&#xff1a;win10下&#xff0c;内置linux系统的安装和体验&#xff0c;你造吗&#xff1f;众所周知&#xff0c;windows系统和linux系统一直是水火不容&#xff0c;而在最新的win10系统却完美兼容了linux系统&#xff0c;但是在默认情况下是关闭的&#xff0c;需要我们…

北风网09.接收普通消息2

该公众号暂时无法提供服务,请稍后再试 转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/6273960.html

中科软测试面试题2019_2019国考成绩今日是否会发布,笔试120能进面不?

2019国考成绩要出来了不&#xff1f;2019国考成绩何时出来&#xff1f;现在已是1月中旬&#xff0c;许多考生对于自己的国考笔试成绩都非常期待&#xff0c;而最近风声四起&#xff0c;搞得考生们人心慌慌&#xff0c;那么2019国考成绩要出来了不&#xff1f;现在我们一起来分析…

C# 数据库连接测试以及备份

现在我们要做一个如图5.1的数据库连接配置&#xff0c;从界面上看有三个功能需要实现&#xff1a;从配置文件中读取数据库连接的相关属性、备份数据库、测试连接。 现在我们就一个一个开始讲解。 图5.1 1.从配置文件中读取数据库连接的相关属性 1) 配置文件中的数据库连接: &l…

Linux程序选择boy糊者girl,linux脚本程序练习-Go语言中文社区

1、编写一个名为iffile程序&#xff0c;它执行时判断/bin目录下date文件是否存在&#xff1f;2、编写一个名为greet的问候程序&#xff0c;执行时能根据系统当前的时间向用户输出问候信息。设从半夜到中午为早晨&#xff0c;中午到下午六点为下午&#xff0c;下午六点到半夜为晚…

什么是初效过滤器_初效过滤器怎么样 初效过滤器特点介绍【详解】

说起过滤器&#xff0c;我们大家都不陌生。现在环境污染严重&#xff0c;我们大多数家庭都在使用 净水器 、 空气净化器 等家电设备&#xff0c;它们需要依靠过滤器来净化水质和空气&#xff0c;让我们的生活更加健康。不过&#xff0c;您知道初效过滤器安装的步骤是什么吗?下…

组件 模块 插件_播放2 –模块,插件有什么区别?

组件 模块 插件关于Play 2模块和插件似乎有些困惑。 我想这是因为两者经常是同义词。 在Play&#xff08;两个版本-1和2&#xff09;中&#xff0c;存在明显的差异。 在本文中&#xff0c;我将研究什么是插件&#xff0c;如何在Java和Scala中实现插件&#xff0c;以及如何从模块…

云计算hcie贴吧_专业介绍|计算机网络技术

点击蓝字关注我们01专业特色计算机网络技术专业所有在职专任教师都具有高级职称和硕士学位&#xff0c;双师比例为75&#xff05;&#xff1b;在企业核心岗位工作的兼职老师4人。筹备组建华为ICT学院。华为ICT学院是华为公司主导的&#xff0c;面向全球在校大学生传递华为ICT技…

url重写(urlrewrite)的一些系统变量

学php也有3年了&#xff0c;一直对url重写不是很了解&#xff0c;本学用到的话都是百度一下&#xff0c;再复制作简单修改&#xff0c;一些变量的参数都不太了解什么意思&#xff0c;难得今天有时间&#xff0c;做个笔记吧&#xff01; 1&#xff09;可用的一些系统变量&#x…

linux日志自动按天保存,linux实现按天生成日志文件并自动清理

linux实现按天生成日志文件并自动清理前篇文章中讲到如何在Linux crontab创建每秒执行的方法&#xff0c;高人可能早意识到日志文件没做处理&#xff0c;假如没人工处理久了日后越来越大肯定会出现问题&#xff0c;当然人工处理也不现实。为了解决这个问题&#xff0c;所以有了…

使用Java成功生成代码的7个技巧

作为介绍&#xff0c;最近我有点安静&#xff0c;部分原因是我一直在忙于Chronicle-FIX的工作 。 这是Chronicle-Enterprise套件中的一个新的超低延迟库&#xff0c;我们证明了该库可以在低个位数微秒内解析和存储消息。 当然&#xff0c;它利用了我们的开源产品Chronicle-Queu…

通达信版弘历软件指标_中线公式指标(副图 通达信 贴图)明确文字提示,辅助判断中线走势下载_通达信公式...

中线公式指标(副图 通达信 贴图)明确文字提示&#xff0c;辅助判断中线走势下载详细说明第一股票公式网()告诉您&#xff1a;当前正要下载&#xff1a;中线公式指标(副图 通达信 贴图)明确文字提示&#xff0c;辅助判断中线走势下载 中线公式指标(副图 通达信 贴图)明确文字提示…

新巴巴运动网 项目第十一天

新巴巴运动网 项目第十一天 今天内容 购物车 创建购物车对象 加入购物车分析开发流程 加入购物车代码开发 同款商品合并(非登陆时、已登陆时) 去购物车结算分析开发流程 去购物车结算代码开发 创建购物车对象 购物项 Sku 是否有货 数量 购物车 List<购物项> 结果集 小计…

linux查看apache配置文件路径,linux 命令行下查看apache配置文件httpd.conf位置

如何用linux命令查看apache配置文件httpd.conf位置&#xff0c;说明如下输入命令httpd -V输出结果[rootMyServer ~]# httpd -VServer version: Apache/2.2.15 (Unix)Server built: Dec 15 2015 15:47:31Servers Module Magic Number: 20051115:25Server loaded: APR 1.3.9, APR…

qt linux webservice,Qt实现访问WebService

之前也许是因为根本不用的原因吧,,,根本没有想过Qt访问WebService的方式....要解决这个问题,因为Qt现行版没有提供直接访问的类库...首先是一些必备知识,我连的服务器是用VS2010建的只有 string helloworld() 和string getHello(string str)两个接口的iis服务器.针对这个我一共…

eclipse 插件教程_编写Eclipse插件教程–第1部分

eclipse 插件教程Eclipse是三个最受欢迎的Java开发IDE之一。 其成功的原因之一是其可扩展性。 对于任何知道该怎么做并且已经做到的人来说&#xff0c;编写eclipse插件都可以非常轻松快捷。 不幸的是&#xff0c;第一次在Eclipse中进行操作会非常耗时且令人沮丧。 Eclipse框架非…