未找到具有自定义注释的Bean

时间:2015-01-23 23:20:05

标签: java spring spring-mvc annotations

我正在尝试在启动我的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()始终为空。 即,没有豆子可以找到。

有什么想法吗?不知道我的可怜动物是狂奔还是死了。 :)

1 个答案:

答案 0 :(得分:0)

这不是一个Spring bean,它只是一个带注释的POJO。使用@Component注释您的注释,我认为您正在寻找。