Java 使用CDI焊接注入继承的特性值

Java 使用CDI焊接注入继承的特性值,java,cdi,weld,Java,Cdi,Weld,我正在开发一个基本的Swing应用程序,即使我总是倾向于使用SpringIOC(带有xml配置)进行依赖注入,我还是想尝试一下CDI焊接。在Spring中完成以下结构后,容器将创建一个学童和一个大学学生,每个学生都有自己的名字 public class Student{ protected String name; public void setName(String name){ this.name = name; } } public clas

我正在开发一个基本的Swing应用程序,即使我总是倾向于使用SpringIOC(带有xml配置)进行依赖注入,我还是想尝试一下CDI焊接。在Spring中完成以下结构后,容器将创建一个
学童
和一个
大学学生
,每个学生都有自己的名字

public class Student{

    protected String name;

    public void setName(String name){
        this.name = name;
    }

}

public class SchoolBoy extends Student{

}

public class UniversityStudent extends Student{

}

我已经看到,可以使用
@Inject@Config
注释在CDI中执行类似的操作。然而,每次我看到这个,它们都在属性本身之上,作为一个继承属性,我不能在这里为我的类这样做。如何实现每个
Student
子类以获得自己的
name

更新


在子类中注入这些值并不一定意味着在配置文件中对它们进行硬编码。属性值本身可以从.properties文件中获取。然而,鉴于
Student
是一个遗留项目,我想从中继承我的类并注入该属性,那么解决方案是什么呢?

CDI目前不支持XML本机配置。您必须使用类似的库才能实现这一点。然而,这是一种不好的做法,强烈反对在配置依赖关系管理(spring.xml)的地方设置bean属性,因为这不是类型和重构安全的。 另一个选项是使用producer方法,您将在其中设置所需的值:

public SchoolBoy produceSchoolBoy {
   //construct new SchoolBoy() and set its name
}

你会有一个不同类型学生的制作人。不是很灵活,但可以工作。

CDI目前不支持XML本机配置。您必须使用类似的库才能实现这一点。然而,这是一种不好的做法,强烈反对在配置依赖关系管理(spring.xml)的地方设置bean属性,因为这不是类型和重构安全的。 另一个选项是使用producer方法,您将在其中设置所需的值:

public SchoolBoy produceSchoolBoy {
   //construct new SchoolBoy() and set its name
}

你会有一个不同类型学生的制作人。不是很灵活,但会起作用。

不一定意味着我想直接包含该值。可以是对存储该值的.properties文件的引用。但是,当我想使用
B
时,如果它是
A
类保护字段和
B
扩展
A
如何指向它?我不理解你的第二个问题。你能更深入地解释一下吗?创建一个producer方法并将属性设置在那里好的,我来看看。如果你能为我的例子提供代码,那肯定是正确的答案。这并不意味着我想直接包含这个值。可以是对存储该值的.properties文件的引用。但是,当我想使用
B
时,如果它是
A
类保护字段和
B
扩展
A
如何指向它?我不理解你的第二个问题。你能更深入地解释一下吗?创建一个producer方法并将属性设置在那里好的,我来看看。如果你能为我的例子提供代码,那肯定是正确的答案。