分类 云开简章 开大招生 开大报名 网络教育 西大网教 教务资料

Java基础知识:Springioc注解教程3

2.3.             @Qualifier 2.3.1.        介绍

    如果 Spring 容器中拥有多个候选 Bean,Spring 容器在启动时也会抛出BeanCreationException异常。

    Spring 允许我们通过@Qualifier注释指定注入 Bean 的名称。

    2.3.2.       实例

    …

    <bean id="office" class="com.baobaotao.Office">

    <property name="officeNo" value="001"/>

    </bean>

    <bean id="office2" class="com.baobaotao.Office">

    <property name="officeNo" value="001"/>

    </bean>

    …

    我们在 Spring 容器中配置了两个类型为Office类型的 Bean,当对 Boss 的office成员变量进行自动注入时,Spring 容器将无法确定到底要用哪一个 Bean,因此异常发生了。

    @Autowired

    public void setOffice(@Qualifier("office")Office office) {

    this.office = office;

    }

    @Qualifier("office")中的office是 Bean 的名称,所以@Autowired和@Qualifier结合使用时,自动注入的策略就从 byType 转变成 byName 了。@Autowired可以对成员变量、方法以及构造函数进行注释,而@Qualifier的标注对象是成员变量、方法入参、构造函数入参。正是由于注释对象的不同,所以 Spring 不将@Autowired和@Qualifier统一成一个注释类。

    public class Boss {

    @Autowired

    private Car car;

    @Autowired

    @Qualifier("office")

    private Office office;

    …

    }

    对成员变量使用 @Qualifier 注释

    public class Boss {

    private Car car;

    private Office office;

    @Autowired

    public Boss(Car car , @Qualifier("office")Office office){

    this.car = car;

    this.office = office ;

    }

    }

    对构造函数变量使用 @Qualifier 注释

    @Qualifier只能和@Autowired结合使用,是对@Autowired有益的补充。一般来讲,@Qualifier对方法签名中入参进行注释会降低代码的可读性,而对成员变量注释则相对好一些。

    2.4.             @Resource 2.4.1.        介绍

    @Resource 的作用相当于 @Autowired,只不过 @Autowired 按 byType 自动注入,面 @Resource 默认按 byName 自动注入罢了。@Resource 有两个属性是比较重要的,分别是 name 和 type,Spring 将 @Resource 注释的 name 属性解析为 Bean 的名字,而 type 属性则解析为 Bean 的类型。所以如果使用 name 属性,则使用 byName 的自动注入策略,而使用 type 属性时则使用 byType 自动注入策略。如果既不指定 name 也不指定 type 属性,这时将通过反射机制使用 byName 自动注入策略。

    Resource 注释类位于 Spring 发布包的 lib/j2ee/common-annotations.jar 类包中,因此在使用之前必须将其加入到项目的类库中。

    2.4.2.       实例 package com.baobaotao;

    import javax.annotation.Resource;

    public class Boss {

    // 自动注入类型为 Car 的 Bean

    @Resource

    private Car car;

    // 自动注入 bean 名称为 office 的 Bean

    @Resource(name = "office")

    private Office office;

    }

    一般情况下,我们无需使用类似于@Resource(type=Car.class)的注释方式,因为 Bean 的类型信息可以通过 Java 反射从代码中获取。

    <bean

    class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>

    一般情况下,我们无需使用类似于@Resource(type=Car.class)的注释方式,因为 Bean 的类型信息可以通过 Java 反射从代码中获取。

 CommonAnnotationBeanPostProcessor实现了BeanPostProcessor接口,它负责扫描使用了 JSR-250 注释的 Bean,并对它们进行相应的操作。


   >>学课在线网课试听.报名        >>学课在线智能题库.模拟做题       >>直播课程       >>录播课程

课程名称
课程免费试听
课程名称
课程免费试听
课程名称
课程免费试听
初级会计师

一级建造师

执业药师

中级会计师

二级建造师

护士资格证

注册会计师

一级造价工程师

健康管理师

经济师考试

监理工程师

考研辅导课

银行从业

安全工程师

自考课程

基金从业

一级消防工程师

心理咨询师

企业人力资源管理师

法律职业资格考试

公共营养师

社会工作者

消防设施操作员

保育员

教师资格证

成人高考

育婴师

公务员培训

文职培训

英语四六级

计算机软考
养老护理员
税务师培训

房产经纪人
咨询工程师

其它课程>>



重要提醒!!内容中联系方式并非本站联系方式,报名咨询的学员请与下面最新联系方式联系我们咨询报名-以免损失!
>>长期招聘兼职招生代理人员,项目合作,团报优惠咨询,有意者请联系我们 >>咨询:13312524700(可加微信)。

昆明学历中心:◆咨询电话:0871-65385921、13312528471 赖老师、钱老师(微信报名:17787865775)点击这里给我发消息


云南地州中心:◆咨询电话:0871-65385921、17787865775 冯老师、 王老师(微信报名:17787865775)点击这里给我发消息


总部报名地址: ◆昆明市-五华区教场东路莲花财富中心10楼;网课试听:ke.xuekaocn.cn   点击这里立即咨询我们



地州分校:   大理分校   丽江分校   迪庆分校   怒江分校   红河分校   临沧分校   玉溪分校   文山分校   保山分校   德宏分校   昭通分校   普洱分校   版纳分校 【各地州学员请加老师微信咨询报名,电话(微信):133-1252-4700】;2021年云南省成人高考>>立即报名



职业技能考证:心理咨询师、健康管理师、茶艺师等更多>◆咨询电话:133 1252 4700(微信)点击这里咨询我们  

公考培训咨询:◆国考云南省考公务员/事业单位面授培训,咨询电话:133 1252 4700 (微信)点击这里立即咨询我们






温馨提示:因考试政策、内容不断变化与调整,学课在线网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

免责声明:以上内容仅代表原创者观点,其内容未经本站证实,学课在线网对以上内容的真实性、完整性不作任何保证或承诺,转载目的在于传递更多信息,由此产生的后果与学课在线网无关;如以上转载内容不慎侵犯了您的权益,请联系我们QQ:1536696595,我们将会及时处理。




网友评论