Java 处理自定义批注

Java 处理自定义批注,java,spring,spring-mvc,annotations,metadata,Java,Spring,Spring Mvc,Annotations,Metadata,有没有可能让beans类检测是否有使用自定义注释(例如@inject)注释的方法,并在这种情况下继续进行某种处理? 如果这是不可能的,您能解释一下我是如何访问beans元数据并在BeanFactoryPostProcessor中利用它的吗? 提前谢谢 编辑:我遇到了这个问题,但不确定它是否是正确的解决方案,因为我听说使用反射会大大降低应用程序的整体性能。传递到postProcessBeanFactory()方法调用中的ConfigurableListableBeanFactory有一个方法get

有没有可能让beans类检测是否有使用自定义注释(例如@inject)注释的方法,并在这种情况下继续进行某种处理?
如果这是不可能的,您能解释一下我是如何访问beans元数据并在BeanFactoryPostProcessor中利用它的吗?
提前谢谢


编辑:我遇到了这个问题,但不确定它是否是正确的解决方案,因为我听说使用反射会大大降低应用程序的整体性能。

传递到postProcessBeanFactory()方法调用中的ConfigurableListableBeanFactory有一个方法getBeanDefinition(String),您可以从中获得该bean的类名。从这里,您可以创建一个Class.forName(String)并获取该类,然后可以检查其成员以获取注释。当然,这个建议也使用Java反射

您还可以尝试使用自己的自定义注释对要检查的每个类进行注释。然后可以从ConfigurableListableBeanFactory调用GetBeanWithAnnotation(类)。这将返回从beanName到相应实例的映射

或者您也可以自己查看一下JavaDoc: