博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(九) spring 使用自定义限定符注解
阅读量:5911 次
发布时间:2019-06-19

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

案例一

  • 定义接口  CD.java
package interfacepackage;public interface CD {    void play();}
  • 定义接口 player .java
package interfacepackage;//定义一个播放器接口public interface player {    void play();}
  • 定义接口的实现类   CD1.java
package bean;import org.springframework.stereotype.Component;import annotation_self.CD1_Annotation;import annotation_self.CD_Annotation;import interfacepackage.CD;@Component@CD_Annotation    //使用自定义限定符来标识这个bean,类似于bean的id@CD1_Annotation //使用自定义限定符来标识这个bean,类似于bean的idpublic class CD1  implements CD{    @Override    public void play() {        System.out.println("我是 CD1");            }    }
  • 定义接口的实现类   CD2.java
package bean;import org.springframework.stereotype.Component;import annotation_self.CD2_Annotation;import annotation_self.CD_Annotation;import interfacepackage.CD;@Component@CD_Annotation  //使用自定义限定符来标识这个bean,类似于bean的id属性@CD2_Annotation //使用自定义限定符来标识这个bean,类似于bean的id属性public class CD2  implements CD{    @Override    public void play() {        System.out.println("我是 CD2");            }    }
  • 定义接口的实现类 CDPlayer.java
package bean;import interfacepackage.CD;import interfacepackage.player;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import annotation_self.CD2_Annotation;import annotation_self.CD_Annotation;@Component("cdp")public class CDPlayer implements player {    @Autowired    @CD_Annotation      @CD2_Annotation  //表示注入的bean的限定符必须有@CD_Annotation和@CD2_Annotation    private CD cd;    @Override    public void play() {        cd.play();    }}
  • 定义配置类 CDPlayerConfig.java
package config;import interfacepackage.CD;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import bean.CDPlayer;@Configuration@ComponentScan(basePackages="bean")public class CDPlayerConfig {}
  • 自定义注解限定符  CD_Annotation .java
package annotation_self;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;import org.springframework.beans.factory.annotation.Qualifier;@Target({ElementType.CONSTRUCTOR,ElementType.FIELD,ElementType.METHOD,ElementType.TYPE})  //该自定义注解限定符的作用目标@Retention(RetentionPolicy.RUNTIME)@Qualifier   //说明这是个自定义限定符public @interface CD_Annotation {}
  • 自定义注解限定符  CD1_Annotation .java
package annotation_self;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;import org.springframework.beans.factory.annotation.Qualifier;@Target({ElementType.CONSTRUCTOR,ElementType.FIELD,ElementType.METHOD,ElementType.TYPE})  //该自定义注解限定符的作用目标@Retention(RetentionPolicy.RUNTIME)@Qualifier   //说明这是个自定义限定符public @interface CD1_Annotation {}
  • 自定义注解限定符  CD2_Annotation .java
package annotation_self;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;import org.springframework.beans.factory.annotation.Qualifier;@Target({ElementType.CONSTRUCTOR,ElementType.FIELD,ElementType.METHOD,ElementType.TYPE})  //该自定义注解限定符的作用目标@Retention(RetentionPolicy.RUNTIME)@Qualifier  //说明这是个自定义限定符public @interface CD2_Annotation {}
  • 编写测试类 Test.java
package test;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import config.CDPlayerConfig;import bean.CDPlayer;public class Test {    public static void main(String[] args) {                ApplicationContext context=new AnnotationConfigApplicationContext(CDPlayerConfig.class);        CDPlayer cdplayer=(CDPlayer)context.getBean("cdp");        cdplayer.play();                    }}

结果:

 

转载于:https://www.cnblogs.com/shyroke/p/6862574.html

你可能感兴趣的文章
第三方分享功能
查看>>
Quartz.NET 前一次任务未执行完成时不触发下次的解决方法
查看>>
SQL中的null值
查看>>
python unittest之断言及示例
查看>>
online_judge_1106
查看>>
JAVA_内部类
查看>>
jxl 导入excel
查看>>
Mysql之performance Schema
查看>>
虚拟机linux上网问题
查看>>
XMLHttpRequest - 原始AJAX初步
查看>>
laravel/lumen 单元测试
查看>>
csu2161: 漫漫上学路(Hash+最短路)
查看>>
重复引用错误:duplicate symbols for architecture x86_64
查看>>
计算机图形学 课设
查看>>
ucenter1.5通讯过程分析(转载)
查看>>
js和html5实现画板
查看>>
浏览器中可以访问,但是git命令、go get命令使用时却无法连接
查看>>
Apache Spark源码走读之7 -- Standalone部署方式分析
查看>>
如何避免重构带来的危险
查看>>
有序的双链表
查看>>