java-ee-6 - CDI 生产者 同一类别的不同版本

标签 java-ee-6 cdi jboss-weld weld

我有一个 JEE6 简单生成器类,它生成 SimpleDateFromat 对象:

public class myProducer {

    @Produces public SimpleDateFormat produceASimpleDateFormat(final InjectionPoint injectionPoint)
    {
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    }
}

我想要:

  1. 创建一个新的生成器,并以某种方式能够在类中指定在何处注入(inject)什么 DateFormat 或...
  2. 编辑现有的 Producer 以根据传递的参数生成不同的 SimpleDateFormat。

我应该如何最好地实现它?

最佳答案

听起来像是限定符的用途。

你可以

@Produces
@TypeA
public SimpleDateFormat produceTypeAFormat() {
    return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}

@Produces
@TypeB
public SimpleDateFormat produceTypeBFormat() {
    return new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
}

或者更动态的东西,您可以在其中读取注入(inject)点来读取带有内容的限定符,例如 @Format("yyyy-MM-dd HH:mm:ss") ,您可以读取注入(inject)点上的限定符。

关于java-ee-6 - CDI 生产者 同一类别的不同版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16309530/

相关文章:

java - 有状态 session bean 是否应该实现 Serializable

dependency-injection - @javax.annotation.ManagedBean 是定义注释的 CDI bean 吗?

java - CDI - 使用库中的拦截器类

java - 如何以编程方式查找和注入(inject)限定符包含类名的 CDI 托管 bean

jakarta-ee - Java EE 6 CDI 实现之间的差异

java - Java编译器如何允许这样的类定义

spring - 当 POST 参数位于 URL 中时,Spring 3 中如何处理 POST 参数?

java - HttpServletResponse 响应 : Ask user to download file instead of auto downloading

junit - 使用 Arquillian 进行 CDI 测试

java - @WebServlet 中的拦截器未激活