依赖于java CDI和应用程序范围
情况
我需要注入一个SessionFactory
面临的挑战是,工厂在不同的环境下是不同的
对于每个环境,工厂应该是@ApplicationScoped
由于事先不知道存在哪些环境,我使用@Nonbinding
属性创建了一个限定符:
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface Environment {
/**
* Environment identifier
*/
@Nonbinding String value() default "";
}
和制作人:
@Produces
@Dependent
@Environment
public SqlSessionFactory produceEnvironmentFactory(InjectionPoint ip)
throws Exception {
Environment environment = ip.getAnnotated().getAnnotation(Environment.class);
return produceFactory(environment.value());
}
问题
因为我需要使用注入点来确定生产哪个工厂,所以我不能使用@ApplicationScoped
注释
有没有一种简单的方法可以使用CDI实现我想要的功能
或者我需要自己实现一个机制(使用map或类似工具)
编辑:
这些环境不会是开发、测试、登台、生产或类似的环境。多个环境可能共存
共 (0) 个答案