java - 将@Produces 与@Qualifier 一起使用

标签 java jakarta-ee cdi jboss-weld

如果使用@Qualifier,有没有办法强制使用生产者方法?我有一个 @Produces 工厂方法,但仍在调用构造函数,这是一个问题,因为我需要 InjectionPoint 来读取参数。使用下面的代码 RRRRRRRR 总是被打印出来。

@ProductTypeA
public class ProductA implements Product
{
    public String test="testA";

    private ProductA()
    {
        System.out.println("RRRRRRRRRRRRRRRRRRRR");
        this.test = "testB";
    }
    private ProductA(InjectionPoint injectionpoint)
    {
        System.out.println("TTTTTTTTTTTTTTTT");
        this.test="testC";
    }
    @Produces
    public ProductA getProductA(InjectionPoint injectionpoint)
    {
        this.test="testD";
        System.out.println("-----------------------------");
        System.out.println("injectionpoint.getAnnotated() = "+injectionpoint.getAnnotated());
        return new ProductA(injectionpoint);
    }

    @Override
    public LinkedList<Feature> getFeatures()
    {
        LinkedList<Feature> rtn = new LinkedList<Feature>();
        rtn.add( new Feature("AAA","111") );
        return rtn;
    }

    @Override
    public String toString()
    {
        return "ProductA []";
    }

}

限定词:

@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface ProductTypeA
{
    @Nonbinding
    String testfield() default "23";
}

最佳答案

限定符应该在生产者方法中:

@Produces
@ProductTypeA
public ProductA getProductA(InjectionPoint injectionpoint)
{
    this.test="testD";
    System.out.println("-----------------------------");
    System.out.println("injectionpoint.getAnnotated() = "+injectionpoint.getAnnotated());
    return new ProductA(injectionpoint);
}

关于java - 将@Produces 与@Qualifier 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21312507/

相关文章:

jsf - 各种 JSTL 库之间有什么区别以及使用哪些库?

java - J2EE 实体中的深度预加载

java - 使用 CDI 注入(inject) PersistenceContext

java - java中的Collectors.groupingBy结果错误

java - com.caucho.hessian.client.HessianRuntimeException : com. caucho.hessian.io.HessianProtocolException: '<' 是未知代码

jsf - CDI 和 "Nested"对话

java - 在注入(inject)对象时强制创建对象的新实例

java - @Dependent CDI 注解是否被子类继承?

java - 使用可执行 jar 时将配置文件加载到类路径中

java - 如何获取 .wav 或 .mid 文件在 netbeans 之外播放?