有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

依赖于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) 个答案