Spring获取带有指定注解的类的实例
首先创建一个名为TestA的注解,并为其声明一个名为desc的方法作为该注解的一个参数,元注解@Retention
修饰该注解的生命周期,@Target
修饰该注解的使用范围,这里使用ElementType.TYPE
表示@TestA
只能修饰在类上
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface TestA {
String desc();
}
这里再创建一个类用于被修饰
public class TestClass {
public String Test(){
return "hello,world";
}
}
然后在TestClass
上方使用@TestA
注解修饰,记得使用@Component
让Spring加载它到容器中
@TestA(desc = "test")
@Component
public class TestClass {
public String Test(){
return "hello,world";
}
}
接下来就可以在容器中找到它了
@Component
public class ProcessBean {
// 注入ApplicationContext
private ApplicationContext applicationContext;
@Autowired
public ProcessBean(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
public void process(){
// 获取带有指定注解的bean
Map<String, Object> beans = applicationContext.getBeansWithAnnotation(TestA.class);
for (Object bean : beans.values()) {
// 获取注解的参数内容
bean.getClass().getAnnotation(TestA.class).desc();
}
}
}
License:
CC BY 4.0