我希望为我的业务逻辑实现一种模式,类似于处理WebSocket注释方法的方式。给定传入消息的特定参数的值,我想在动态查找的托管bean中调用带注释的方法。例如,给定以下设置:
@Qualifier
@Target( ElementType.METHOD )
@Retention( RetentionPolicy.RUNTIME )
public @interface Handler { }
@ApplicationScoped public class MyHandler1 {
@Handler public void someMethod() { }
@Handler public void otherMethod() { }
}
然后我想编写一个函数来根据该参数值选择一个方法。它应该像给出的" someMethod"那样简单。作为一个值,使用名为" someMethod"的方法查找我的合格托管bean。并称之为。
我的问题是选择具有Instance< ...>的bean仅适用于类型级限定符和/或类型。要实际找到我需要迭代所有方法的方法。我有点担心查找和/或必须管理缓存或某种类型的成本。
答案 0 :(得分:2)
你不应该使用限定符来标记方法,任何其他注释都可以使用。
如果您想使用CDI,那么您可以编写一个观察ProcessAnnotatedType
事件的CDI扩展名。
话虽如此,从你的问题描述中,我并不确定你究竟在做什么,或者CDI是否是最好的方法。
答案 1 :(得分:0)
您可以使用https://code.google.com/p/reflections/扫描您的课程。它非常快,可以轻松缓存。您甚至可以使用反射maven插件在编译时进行扫描......