@ComponentScan注解可以扫描 任意 类 或者 注解 中内部类bean;
要想被扫描的前提是内部类标注了@Component及其相关衍生注解、内部类必须是static修饰,否则扫描不到;如果是注解的内部类则只能是public static修饰
//@Configuration
public class ProfileConfig {
@Component("class1")
private static class Class1 {
@Bean
public Class3 class3() {
return new Class3();
}
}
@Component("class2")
static class Class2 {
}
//@Component("class3")
protected static class Class3 {
}
// @Component("class4") //出错
// protected class Class4 {
//
// }
}
--------------------------------------------------------
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
//@Bean
public @interface MyBean {
public static final int age1=3; //常量可以
int age=2;
public abstract String value() default "qwer"; //属性可以
//内部类可以
@Component
@DependsOn("myBean.EventZ") //依赖事件bean的创建,保证该bean在事件bean之后创建
//细节:因为是内部类,所以默认bean的id是类名首字母小写,不是eventZ而是myBean.EventZ
class EventSource {
public EventSource(){
System.out.println("事件源创建了...");
}
}
@Component//("eventZ")
public static class EventZ {
public EventZ(){
System.out.println("事件创建了...");
}
}
}