泽西多个构造函数@inject

时间:2017-06-30 15:03:10

标签: java jersey

我正在为我的球衣资源创建两个构造函数,但只有一个是能够调用的构造函数,

这是示例代码,

public class jerseyresoure {
    private String name;
    private int age;

    @Inject 
    public jerseyresoure (String name){
          this.name = name;
    }

    @Inject 
    public jerseyresoure (int age){
          this.age= age;
    }
}

带参数int的get cosntructor是成功调用的那个, 你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

根据CDI规范,使用@Inject注释多个构造函数是非法的(参见CDI规范的第3.9节):

  

如果bean类没有使用@Inject显式声明构造函数,那么不接受任何参数的构造函数就是bean   构造

     

如果bean类有多个带注释的构造函数@Inject,容器会自动检测问题并对其进行处理   作为定义错误。

     

bean构造函数可以包含任意数量的参数。 bean构造函数的所有参数都是注入点。

所以你可以做的如下:

public class jerseyresoure {
    private String name;
    private int age;

    @Inject 
    public jerseyresoure (String name, int age){
        this.name = name;
        this.age = age;
    }

}

我假设您正在使用生产者方法,以便注入值( name age )。