我目前正在攻击一个基类被很多bean扩展的项目。
这个基类有一个常用的方法,基本上我唯一需要做的改变是检查特定调用何时失败,调用该方法的当前实例是否是应用程序作用域bean。如果是,我只需记录错误消息并返回缓存响应;如果不是,我必须提出异常。
在每个扩展此基类的应用程序范围bean上使用instanceof
的公寓,有没有办法知道对象this
是否是应用程序范围的bean?
答案 0 :(得分:1)
您可以检查某个实例的类是否具有特定注释。例如,电话:
Annotation[] annotations = this.getClass().getAnnotations();
将为您提供当前实例的所有注释。或者您可能想要找出某些注释:
ApplicationScoped annotation = this.getClass().getAnnotation(ApplicationScoped.class);
如果未使用null
@ApplicationScoped
在继承的情况下,方法getAnnotations()
也返回父类的注释,并且使用@RequestScoped
类注释如果其父类被声明,则还将返回@ApplicationScoped
。另一方面,JSF管理的bean将覆盖父级的范围。
希望这会对你有所帮助。