我有一个基类,其属性应该在派生类中设置。我要使用注释。怎么可能? 我知道如何使用xml spring配置,但不能使用注释,因为我要在属性中编写它们?
以下是一些示例代码:
public class Base {
// This property should be set
private String ultimateProperty;
// ....
}
public class Hi extends Base {
// ultimate property should be "Hi" in this class
// ...
}
public class Bye extends Base {
// ultimate property should be "Bye" in this class
// ...
}
如何通过注释实现这一点?
答案 0 :(得分:2)
一些选项取决于Base的其他内容:
class Base {
private String ultimateProperty;
Base() {
}
Base(String ultimateProperty) {
this.ultimateProperty = ultimateProperty;
}
public void setUltimateProperty(String ultimateProperty) {
this.ultimateProperty = ultimateProperty;
}
}
class Hi extends Base {
@Value("Hi")
public void setUltimateProperty(String ultimateProperty) {
super.setUltimateProperty(ultimateProperty);
}
}
class Bye extends Base {
public Bye(@Value("Bye") String ultimateProperty) {
setUltimateProperty(ultimateProperty);
}
}
class Later extends Base {
public Later(@Value("Later") String ultimateProperty) {
super(ultimateProperty);
}
}
class AndAgain extends Base {
@Value("AndAgain")
private String notQuiteUltimate;
@PostConstruct
public void doStuff() {
super.setUltimateProperty(notQuiteUltimate);
}
}
当然,如果你真的只想要那个班级的名字,那么
class SmarterBase {
private String ultimateProperty = getClass().getSimpleName();
}
答案 1 :(得分:0)
字段的注释直接链接到类中的源代码。您可以通过Spring EL with-in @Value注释来执行您正在寻找的内容,但我认为复杂性会覆盖该值。
您可能需要考虑的模式是使用@Configuration批注以编程方式设置应用程序上下文。这样,您就可以定义注入基类的内容。