组合注解与元注解

Posted 虚空假面

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组合注解与元注解相关的知识,希望对你有一定的参考价值。

  从spring2开始,为了响应jdk1.5推出的注解功能,spring开始大量加入注解来代替xml配置。随着注解的大量使用,我们发现多个相同的注解被在不同的类或者方法里多次使用的时候,代码看起来比较繁琐。这就是所谓的样板代码,是spring设计原则中要消除的代码。比如以下代码:

  如果我们把以上三个注解合并为一个注解,那多省事儿!这就是组合注解,与之相对的就是元注解。
  元注解就是可以注解到别的注解上的注解,被注解的注解就是组合注解。
  额,好乱。元注解就是可以用来跟别的注解搭配,从而构造出新的注解的基础数据,而构造出来的新数据就是组合注解。一个注解是组合注解还是元注解是相对的,它相对于一个注解来说是组合注解,相对于另一个来说可能就是元注解。
------示例:@Configuration跟@ComponentScan注解组合为一个新注解----------------------------------------

注解类:

@Target(ElementType.TYPE)  //jdk5注解,表示作用目标类型,是类、方法还是变量等
@Retention(RetentionPolicy.RUNTIME)//jdk注解,表示该注解会保存多久,生命周期相关
@Documented//jdk注解,表示是否被javadoc命令导出文档
@Configuration //组合Configuration注解
@ComponentScan //组合ComponentScan注解
public @interface WiselyConfiguration {
    String[] value() default {};
}

新注解使用类:

  @WiselyConfiguration("com.wzy.bj.myannotation")
  public class DemoConfig {
  }

测试服务类:

@Service
public class DemoService {
    public void doService(){
        System.out.println("doing my demoService,,,,,");
    }
}
测试类:

public class AnnotationMain {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DemoConfig.class);
        DemoService demoService = context.getBean(DemoService.class);
        demoService.doService();

        context.close();
    }
}

测试结果:

  

 

以上是关于组合注解与元注解的主要内容,如果未能解决你的问题,请参考以下文章

组合注解与元注解

Spring Boot实战笔记-- Spring高级话题(组合注解与元注解)

Spring----组合注解与元注解

JavaEE开发之Spring中的条件注解组合注解与元注解

GroovyMOP 元对象协议与元编程 ( 方法委托 | 使用 @Delegate 注解进行方法委托 )

GroovyMOP 元对象协议与元编程 ( 方法注入 | 使用 @Category 注解进行方法注入 | 分类注入方法查找优先级 )