spring - 如何确保<上下文:annotation-config/> is set in classes depending on it?

标签 spring annotations

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/

相关文章:

java - 如何为具有 Autowiring 依赖项的类创建模拟 spring bean

android - 带有按钮的 skobbler (skmaps) 注释

带父级的 Spring @Component

java - 从枚举创建单例 bean

java - 为什么Spring MVC会以404响应并报告“在DispatcherServlet中未找到带有URI […]的HTTP请求的映射”?

java - Spring Security 中具有多个 http 部分的 NoUniqueBeanDefinitionException

r - 将 GENCODE ID 转换为 Ensembl - Ranged SummarizedExperiment

java - 为什么@Given 不可重复?

Scala - 可以在方法级别应用implicitNotFound 注释吗?

java - Spring - 仅当值不为空时才设置属性