元注解:可以在注解类上进行的注解。
组合注解:当前注解类上有元注解。
使用自定义组合注解,合并配置类中的@Configuration和@ComponentScan
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Configuration
@ComponentScan
@Documented
public @interface Assemble {
String[] value() default{};
}
@Target(ElementType.TYPE):注解在类上
@Retention(RetentionPolicy.RUNTIME):在JVM运行时读取
@Configuration:表示配置
@ComponentScan:自动扫描@component、@repository、@service、@controller放入容器
配置类:
@Assemble("com.demo02.assemble")
public class AssembleConfig {
}
@Assemble("com.demo02.assemble"):自定义组合注解。
bean:
@Component
public class Demo {
public void s() {
System.out.println("s()");
}
}
测试运行:
public class App {
@Test
public void test01() {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AssembleConfig.class);
Demo bean = context.getBean(Demo.class);
bean.s();
context.close();
}
}
自定义组合注解能被用于配置类中,避免每次定义配置类时,使用@configuration和@compontScan两个注解,简化代码。