Spring注解总结----@Autowired和@Qualifier、@Resource
来源:互联网 发布:网络视频下载软件 编辑:程序博客网 时间:2024/06/04 17:43
前言
由于能力有限,不会过于深入的探讨spring的注解,只会介绍一下注解的基本使用方法
@Autowired
@Autowired可以帮我们注入一个属性,一般作用在普通方法之上(也可以作用的变量上或者构造器上)
@Autowired是根据类型匹配的,所以如果有两个一样类型的参数的时候,会出错
看下下面的例子
public class Bean2 {@Overridepublic String toString() {return "bean2....";}}
public class Bean1 {private Bean2 bean2;public Bean2 getBean2() {return bean2;}@Autowiredpublic void setBean2(Bean2 bean2) {this.bean2 = bean2;}public String toString() {return "bean1....";}}这是一个Bean,在Bean1里有一个属性Bean2,这是利用@Autowired来注入这个属性
相应的xml定义如下
<!-- 使用这个扫描使用了注解的包,这样注解才会有用 --><context:component-scan base-package="bean" /><bean id="bean1" class="bean.Bean1"/><bean id="bean2" class="bean.Bean2"/>接着是测试类
public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");Bean1 bean1 = (Bean1) ctx.getBean("bean1");System.out.println(bean1);}这时打印出来是bean2....
证明注入成功了
由于@Autowired是根据类型注入的,那么如果去掉xml文件中的id,也是可以注入成功
@Qualifier
@Qualifier可以缩小匹配的范围
@Qualifier一般和@Autowired来配合使用,以此来解决使用@Autowired时有多个类型匹配的问题
使用方式如下(配置文件和测试代码和上面一样)
public class Bean1 {private Bean2 bean2;public Bean2 getBean2() {return bean2;}@Autowired@Qualifier("bean2")public void setBean2(Bean2 bean2) {this.bean2 = bean2;}public String toString() {return "bean1....";}}
在使用了@Autowired进行注入之后,又使用了@Qualifier来缩小匹配的范围,即类型为Bean2的且名称为bean2的才会被注入其中,如果找不到则会出错
对于多个参数的方法,如果需要注入,那么@Qualifier可以作用的参数前,这样就可以注入多个参数了
代码如下(Bean3和Bean2一样)
public class Bean1 {private Bean2 bean2;private Bean3 bean3;public Bean2 getBean2() {return bean2;}public Bean3 getBean3() {return bean3;}@Autowiredpublic void set(@Qualifier("bean2") Bean2 bean2, @Qualifier("bean3") Bean3 bean3) {this.bean2 = bean2;this.bean3 = bean3;}public String toString() {return "bean1....";}}在使用了@Autowired注入时,指定了名称为bean2的bean注入第一个参数,名称为bean3的bean注入第二个参数中,这样就可以注入多个参数了(bean3需要在xml文件中声明)
@Resource
@Resource可以作用在属性上或者方法上,和@Autowired不同的是,@Resource默认是根据名称注入的,在使用的时候指定名称,这样就会找到对应的bean注入,如果没有找到对应的bean,则根据类型注入使用方式如下(其他代码和上面一样)
public class Bean1 {private Bean2 bean2;public Bean2 getBean2() {return bean2;}@Resource(name = "bean2")public void setBean2(Bean2 bean2) {this.bean2 = bean2;}public String toString() {return "bean1....";}}这样名称为bean2的bean就会注入
@Autowired和@Resource各有各的用法,如果要注入的方法中有多个参数,那么可以使用@Autowired,如果是其他情况,可以使用@Resource
0 0
- Spring注解总结----@Autowired和@Qualifier、@Resource
- spring注解 @Autowired @Qualifier @Resource
- spring注解 @Autowired @Qualifier @Resource
- 注解,@Qualifier+@Autowired 和 @Resource
- 5.spring注解@Required、@Autowired、@qualifier、@resource
- spring注解@Required、@Autowired、@qualifier、@resource
- Spring @Autowired和@Qualifier注解
- # @Resource @Autowired @Qualifier注解
- Spring的@Autowired注解、@Qualifier注解、@Resource注解
- Spring注解@Autowired、@Qualifier
- @Resource、@Autowired、@Qualifier注解详解
- spring的注解使用,Autowired和Qualifier
- Spring @Resource、@Autowired、@Qualifier的注解注入及区别
- Spring @Resource、@Autowired、@Qualifier的注解注入及区别
- Spring @Resource、@Autowired、@Qualifier的注解注入及区别
- Spring @Resource、@Autowired、@Qualifier的注解注入及区别 .
- Spring Resource、Autowired、Qualifier的注解注入及区别
- Spring @Resource、@Autowired、@Qualifier的注解注入及区别
- Python之命令解析模块optparse
- ArcGIS Engine二次开发——计算shapefile面图层要素的面积
- SQL表连接图解
- Android 重写系统Crash处理类,保存Crash信息到SD卡 和 完美退出程序的方法
- 一道腾讯笔试题,考察对STL erase函数的运用
- Spring注解总结----@Autowired和@Qualifier、@Resource
- lua 中的string库函数
- leetcode第171题-Excel Sheet Column Number
- 清晨的遐想
- 在DCOM 中不存在WORD、EXCEL等OFFICE组件
- java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException 的解决办法
- java IO 字节流、字符流操作总结三之字符流、序列化和反序列化
- Service_Android四大组件之一
- 第四周项目一 三角形的构造函数(2) 默认构造函数