我想使用@Inject 将由外部框架管理的实例公开给 CDI 应用程序。这些实例必须由其他框架提供,因为它们的生命周期基于各种缓存策略。
例如:同一实例在同一线程范围内可见,可能存在于多个请求范围内, session 范围不适用。似乎我需要定义一个针对此类实例的新范围?
最好的方法是什么?一个扩展,是否可以使用生产者方法?
我几乎可以使用以下方法使用生产者方法:
@Inject
@CustomInject
FwObject obj;
@Produces
@CustomInject
FwObject createConfig(InjectionPoint p) {
return (FwObject) ctx.get((Class<?>) p.getType());
}
但这迫使我明确说明生成的类型,这是不可能的,因为没有通用的框架接口(interface)。
感谢任何帮助。
最佳答案
也许 使用生产者方法,一切都取决于您的需要,但扩展可能是最好的方法。如果您需要使用新范围(如果您使用的是 JSF,Conversation 范围可能会起作用),您肯定需要创建一个扩展。
关于java - 使用 cdi 注入(inject)缓存实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13183804/