Spring提供了一个很好的功能,允许程序员在java源代码中定义注释来设置@Value("systemProp:defaultvalue")
和其他注入(inject)的依赖项。
但是,在某些情况下,我们可能会忘记启用 <context:annotation-config/>
在混合 XML 和注释 spring 程序中。
有没有一种方法、实用方法或模式可以放入 java 类中来强制 <context:annotation-config/>
是不是被遗忘了?
最佳答案
编写一个测试用例,如果 <context:anotation-config/>
则失败配置不正确。
如果您确实想检查是否在生产中,则定义一个默认值并注入(inject)该默认值。
那么你需要在构造函数中检查它,例如。
<罢工>
公共(public)类演示(){
@Value("default");
private String check;
public Demo() {
assert "default".equals(check) : "It seams that anntation-config is not enabled";
}
}
罢工><罢工>罢工> 不起作用,因为值是在调用构造函数之后注入(inject)的。
如果支持@Autowired,您可以在一个单独的方法中拥有它:
public class Demo2 {
@Autowired
public void checkAnnotationConfigEnabled(
@Value("default") String check) {
assert "default".equals(check);
}
}
如果您的问题不是需要启用anntation-config
对于每个类,有一个 Bean 来实现此检查逻辑就足够了。如果没有,并且不想将此行放在每个类中,那么您可以使用 AspectJ 类型间声明来完成。
关于spring - 如何确保<上下文:annotation-config/> is set in classes depending on it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6677004/