Spring @Autowired和@Qualifier注解
来源:互联网 发布:死侍 知乎 编辑:程序博客网 时间:2024/06/05 03:42
介绍:
@Autowired和@Qualifier是Spring项目中比较常用的两个注解。一般在同一个实现Bean可以在不同的平台使用,Controller调用Service,Service调用DAO。其中很多实例都是使用@Autowired自动实现,但是如果同一份Bean实例有不同的构造器来创建的时候,使用Autowired自动创建Bean实例IOC容器就分不清了,这时候需要使用@Qualifier来指定特定的bean实例构造方法。
@Autowired可以标注类中引用属性,构造方法,和普通方法。用Autowired标记的属性和方法,都会自动创建实体,当然对于方法中的参数意思是IOC容器自动创建bean实体,并负责给参数列表中的引用了。
@Autowired标记的方法都会在实体创建的时候,自动调用。
实例:
1.创建两个实体bean,代码如下:
QualifierBean实体Bean实现代码
package com.yangwan.beans;public class QualifierBean {private String idstr;private int value;private String defaultFlag = "默认标识";public QualifierBean(String idstr, int value){this.idstr = idstr;this.value = value;}public QualifierBean(String idstr,int value,String defaultFlag){this.idstr = idstr;this.value = value;this.defaultFlag = defaultFlag;}public String getIdstr() {return idstr;}public void setIdstr(String idstr) {this.idstr = idstr;}public int getValue() {return value;}public void setValue(int value) {this.value = value;}public void printQualifierBeanInformation(){System.out.println(this);System.out.println("idstr: "+this.idstr+"\nvalue: "+this.value+"\ndefaultFlag: "+this.defaultFlag);}}
QualifierTestBean实体Bean代码实现
package com.yangwan.beans;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;public class QualifierTestBean {private QualifierBean twoqb;private QualifierBean threeqb;public QualifierTestBean(){}//利用两个参数的构造器自动创建QualifierBean实例 @Autowiredpublic void setTwoqbTest(@Qualifier("twoparaqualifierbean")QualifierBean twoqb){this.twoqb = twoqb;} @Autowiredpublic void setThreeqbTest(@Qualifier("threeparaqualifierbean")QualifierBean threeqb){this.threeqb = threeqb;}public void printQualifierTestBeanInformation(){this.twoqb.printQualifierBeanInformation();this.threeqb.printQualifierBeanInformation();}}
注解:QualifierBean中有三个属性,分别为idstr,value和defaultFlag。有两个构造函数,分别带有两个参数和三个参数,带有三个参数的构造函数会修改defaultFlag属性。最后有个printQualifierBeanInformation()方法来输出bean的信息。在QualifierTestBean中,又twoqb和threeqb两个属性,都是有@Autowired自动创建,由@Qualifier指定创建的构造函数。
接下来看下配置文件:
<context:annotation-config /> <context:component-scan base-package="com.yangwan.beans"/> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> <!-- 利用@Qualifier来自动创建Bean实例,不需要设置id,只需要设置class便可 --> <bean class="com.yangwan.beans.QualifierBean"><qualifier value="twoparaqualifierbean"></qualifier><constructor-arg index="0" value="001"></constructor-arg><constructor-arg index="1" value="22"></constructor-arg> </bean> <bean class="com.yangwan.beans.QualifierBean"><qualifier value="threeparaqualifierbean"></qualifier><constructor-arg name="idstr" value="002"></constructor-arg><constructor-arg name="value" value="23"></constructor-arg><constructor-arg name="defaultFlag" value="修改Flag"></constructor-arg> </bean> <bean id="qualifiertestbean" class="com.yangwan.beans.QualifierTestBean"></bean>
注解:加上<context:annotation-config />开启注解。
加上<context:component-scan base-package="com.yangwan.beans"/>扫描包
测试函数:
package com.yangwan.test;import org.springframework.beans.factory.BeanFactory;import org.springframework.beans.factory.xml.XmlBeanFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.core.io.FileSystemResource;import org.springframework.core.io.Resource;import com.yangwan.beans.Boss;import com.yangwan.beans.QualifierTestBean;public class MainTest {public static void main(String[] args) { String[] locations = {"file:C:/Users/bw/Desktop/yw/AutowireTestPro/src/main/resources/spring/application-config.xml"}; ApplicationContext ctx = new ClassPathXmlApplicationContext(locations); Boss boss = (Boss) ctx.getBean("boss"); System.out.println(boss); boss.printInformation(); QualifierTestBean qtb = (QualifierTestBean)ctx.getBean("qualifiertestbean"); qtb.printQualifierTestBeanInformation(); } }
注解:在创建ApplicationContext的时候,如果配置文件的classpath相对路径不清楚,可以使用绝对路径,更加明了。以上的包名,配置文件路径都是博主的哦,自己注意修改。
0 0
- Spring @Autowired和@Qualifier注解
- Spring注解@Autowired、@Qualifier
- spring的注解使用,Autowired和Qualifier
- Spring注解总结----@Autowired和@Qualifier、@Resource
- Spring Annotation(注解) Autowired Qualifier
- spring注解 @Autowired @Qualifier @Resource
- spring注解 @Autowired @Qualifier @Resource
- Spring注解标签 @Autowired @Qualifier
- Spring注解@Autowired @Repository @Qualifier
- 注解,@Qualifier+@Autowired 和 @Resource
- Spring注解标签详解@Autowired @Qualifier等
- 5.spring注解@Required、@Autowired、@qualifier、@resource
- spring注解@Required、@Autowired、@qualifier、@resource
- Spring注解标签详解@Autowired @Qualifier等
- Spring注解标签详解@Autowired @Qualifier
- Spring注解标签详解@Autowired @Qualifier @Component
- Spring的@Autowired注解、@Qualifier注解、@Resource注解
- # @Resource @Autowired @Qualifier注解
- 利用SSH 或 Teamviewer 控制远程服务器
- java 垃圾收集相关常用参数
- 判断回文字符串(给定开始位置和字符个数)
- 文章标题
- POJ 1939 Diplomatic License G++
- Spring @Autowired和@Qualifier注解
- 关于springmvc返回到前台报406错误与404错误的解决
- CoordinatorLayout显示隐藏ToolBar
- Mysql笔记
- java基础知识,一些概念的区别总结
- 内存管理-SLAB(SLAB的基本数据结构)
- C++中的new、operator new与placement new
- HDU-1004Let the Balloon Rise
- Buy or Build UVA