是否可以在运行时检测 CDI 托管 bean 的范围?
is it possible to detect a CDI managed bean's scope at runtime?
是否可以在运行时检测 CDI 托管 bean 的范围?
您可以注入 BeanManager 并查询您的 bean 定义:
@Inject
BeanManager beanManager;
...
Class<? extends Annotation> scope = beanManager.getBeans(MyClass.class,MyOptionalQualifier1.class).iterator().next().getScope();
if(scope.isAssignableFrom(RequestScoped.class))
...
是否可以在运行时检测 CDI 托管 bean 的范围?
您可以注入 BeanManager 并查询您的 bean 定义:
@Inject
BeanManager beanManager;
...
Class<? extends Annotation> scope = beanManager.getBeans(MyClass.class,MyOptionalQualifier1.class).iterator().next().getScope();
if(scope.isAssignableFrom(RequestScoped.class))
...