java - 使用 cdi 注入(inject)缓存实例

标签 java jakarta-ee cdi weld

我想使用@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/

相关文章:

java - 如何在 Eclipse 中克服类型安全警告而不忽略它?

java - 使用 Mockito 模拟 EntityManager 的查找方法?

java - 执行登录后如何管理 j_username 值?

java - 避免多项目环境中模糊依赖关系的众所周知的策略

java - 通过套接字: one server and two clients进行通信

java - nginx作为Websocket代理发送短信

java - 升级到 Netbeans 8.0.1 和 Glassfish 4,1 后包不存在

jakarta-ee - 如何将 Kubernetes 服务注入(inject)我的 java 类?

java - 创建不同的 ImageView 对象 - 不同的时间

java - 使用 Google App Engine 开发服务器作为生产服务器