我可以使用CDI在任何bean中查找所有限定符注释的方法吗?

时间:2014-10-12 19:39:43

标签: java java-ee reflection annotations cdi

我希望为我的业务逻辑实现一种模式,类似于处理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仅适用于类型级限定符和/或类型。要实际找到我需要迭代所有方法的方法。我有点担心查找和/或必须管理缓存或某种类型的成本。

2 个答案:

答案 0 :(得分:2)

你不应该使用限定符来标记方法,任何其他注释都可以使用。

如果您想使用CDI,那么您可以编写一个观察ProcessAnnotatedType事件的CDI扩展名。

话虽如此,从你的问题描述中,我并不确定你究竟在做什么,或者CDI是否是最好的方法。

答案 1 :(得分:0)

您可以使用https://code.google.com/p/reflections/扫描您的课程。它非常快,可以轻松缓存。您甚至可以使用反射maven插件在编译时进行扫描......