我正在尝试在启动我的spring mvc应用程序后找到带有自定义注释的bean,但我失败了:)
带有自定义注释的Bean。
@Animal("Tiger")
public class Tiger implements Cat{
public boolean evil = true;
private int teeth;
public Tiger() {
}
}
自定义注释
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE) //can use in class only.
public @interface Animal {
String value();
}
然后我有一个Zoo类,试图在服务器启动后找到所有使用@Animal注释的bean
public class Zoo implements ApplicationListener {
@Override
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof ContextRefreshedEvent) {
ApplicationContext appCntxt = ((ContextRefreshedEvent) event).getApplicationContext();
System.out.println("Say hello to the family!")
Map<String,Object> beans = appCntxt.getBeansWithAnnotation(Animal.class);
}
}
}
Zoo在我的application-context.xml中定义
<bean id="Zoo" class="com.app.zoo"/>
正在执行println但beans.size()始终为空。 即,没有豆子可以找到。
有什么想法吗?不知道我的可怜动物是狂奔还是死了。 :)
答案 0 :(得分:0)
这不是一个Spring bean,它只是一个带注释的POJO。使用@Component
注释您的注释,我认为您正在寻找。