如何确保>是根据它在班级中设置的吗?

发布于 2024-11-19 22:58:12 字数 323 浏览 1 评论 0原文

Spring 提供了一个很好的功能,允许程序员在 java 源代码中定义注释来设置 @Value("systemProp:defaultvalue") 和其他注入的依赖项。

然而,在某些情况下,我们可能会忘记在混合 XML 和注释 spring 程序中启用

有没有办法、实用方法或模式放入 java 类中以强制 不被遗忘?

Spring provide a nice feature that allow programmer to define annotations in java source code to setup @Value("systemProp:defaultvalue") and other injected dependency.

However, in some case we may forget to enable the <context:annotation-config/> in a mixed XML and annotation spring program.

Is there a way, an utility method or a pattern to put in the java class to enforce the <context:annotation-config/> is not being forgotten?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷血 2024-11-26 22:58:13

编写一个测试用例,如果 配置不正确,该测试用例就会失败。


如果您确实想检查是否在生产中,则定义一个默认值并注入该默认值。
那么你需要在构造函数中检查它,例如。
<罢工>
公共类演示(){

  @Value("default");
  private String check;

  public Demo() {
     assert "default".equals(check) : "It seams that anntation-config is not enabled";
  }
}


不起作用,因为值是在调用构造函数后注入的。

如果支持@Autowired,您可以将其全部放在单独的方法中:

public class Demo2 {   

    @Autowired
    public void checkAnnotationConfigEnabled(
                          @Value("default") String check) {
        assert "default".equals(check);
    }
}

如果您的问题不是您需要启用如果为每个类添加 anntation-config ,那么拥有一个实现此检查逻辑的 bean 就足够了。如果没有,并且不想将此行放在每个类中,那么您可以使用 AspectJ 类型间声明来完成。

Write a test case that fails if <context:anotation-config/> is not configured right.


If you really want to check if in production, then define a default value and inject this default value.
Then you need to check it in the constructor for example.

public class Demo() {

  @Value("default");
  private String check;

  public Demo() {
     assert "default".equals(check) : "It seams that anntation-config is not enabled";
  }
}


Does not work because the Value is injected after the constructor is invoked.

If @Autowired is supported the you can have it all in an seperate method:

public class Demo2 {   

    @Autowired
    public void checkAnnotationConfigEnabled(
                          @Value("default") String check) {
        assert "default".equals(check);
    }
}

If your problem is not that you need to enable anntation-config for each class then it would be enougth to have one bean that implements this check logic. If not, and do not want to put this lines in every class, then you can do it with AspectJ intertype declartions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文