博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第3章—高级装配—创建自定义的限定符
阅读量:5091 次
发布时间:2019-06-13

本文共 2279 字,大约阅读时间需要 7 分钟。

创建自定义的限定符

​ 我们可以为bean设置自己的限定符,而不是依赖于将bean ID作为限定符.在这里所需要做的就是在bean声明上添加@Qualifier注解来进行更加明确的区分.例如:

Animal接口:

package com.home.quar;public interface Animal {    public void eat();}

Cat:

package com.home.quar;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Component;@Component@Qualifier("cat")public class Cat implements Animal {    @Override    public void eat() {        System.out.println("猫吃鱼");    }}

Panda:

package com.home.quar;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Component;@Component@Qualifier("panda")public class Panda implements  Animal {    @Override    public void eat() {        System.out.println("熊猫吃竹子");    }}

TestDemo:

package com.home.quar;import org.junit.Test;import org.springframework.beans.factory.NoSuchBeanDefinitionException;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TeatDemo {    @Autowired    @Qualifier(value = "cat")    private Animal animal;    public void setAnimal(Animal animal) {        this.animal = animal;    }    public Animal getAnimal() {        return animal;    }    @Test    public void demo() {        ApplicationContext app = new ClassPathXmlApplicationContext("classpath:application.xml");        TeatDemo bean = (TeatDemo) app.getBean("teatDemo");        System.out.println(bean.getAnimal());        Animal al = bean.getAnimal();        if (al instanceof Cat) {            System.out.println("Cat");        } else if (al instanceof Panda) {            System.out.println("Panda");        }        al.eat();        try {            app.getBean("panda");        } catch (Exception e) {            if (e instanceof NoSuchBeanDefinitionException) {                System.out.println("@Qualifier不能作为Bean的标识符");            }            e.printStackTrace();        }    }}

最终结果是被@Qualifier注解的类被注入了进来,当然我们也可以用 XML配置的方法来限定@Qualifier的注入:

转载于:https://www.cnblogs.com/charlypage/p/9237939.html

你可能感兴趣的文章
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
IOS--沙盒机制
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Mongo自动备份
查看>>
cer证书签名验证
查看>>
synchronized
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
QML学习笔记之一
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
IdentityServer4-用EF配置Client(一)
查看>>