【问题标题】:What's the better thing between annotation and ApplicationContext in spring [duplicate]春天的注释和ApplicationContext之间有什么更好的东西[重复]
【发布时间】:2014-02-14 20:52:17
【问题描述】:

我想知道在性能方面这些情况之间有什么更好的地方:

@Component
public class A{


    public void doSomethingOne(){

        ServiceDelegateA serviceA = (ServiceDelegateA) ApplicationContextUtils.getBean("ServiceDelegateA");         

        serviceA.compute();
    }


    public void doSomethingTwo(){

        ServiceDelegateB serviceB = (ServiceDelegateB) ApplicationContextUtils.getBean("ServiceDelegateB");         

        serviceB.doAction();
    }
}

或者

@Component
public class A{


    @Autowired
    ServiceDelegateA serviceA;

    @Autowired
    ServiceDelegateB serviceB;



    public void doSomethingOne(){
    serviceA.compute();

    }


    public void doSomethingTwo(){


        serviceB.doAction();
    }
}

提前感谢您的帮助和建议。

【问题讨论】:

  • 什么是ApplicationContextUtils
  • 我会说差异可以忽略不计,如果它真的很重要,那么你会测量它并打电话。您采用任何一种方法的决定应该由其他因素(风格、可维护性、供应商配合)驱动。过早的优化是万恶之源

标签: java spring


【解决方案1】:

我通过假设 ApplicationContextUtils 实现 ApplicationContextAware 并在其中有一个 ApplicationContext 来回答这个问题。

根据可用的 spring 文档here,您可以阅读在配置 Spring 方面注解是否比 XML 更好?部分,但作为比较。

基于 XML 的配置;

  1. 可以使用没有任何注释的普通旧 Java 对象 (POJO)。这意味着 Java 对象中没有其他依赖项。 Spring 配置从不接触源代码,源代码可以在其他地方重用。
  2. 当您使用预编译的 Jar 文件时,这种方法会更好,因为您无法修改和重新编译源代码以获得注释,或者您希望代码向后兼容不同的 JVM。
  3. 配置集中且易于维护

基于注解的配置;

  1. 所有与 Spring 相关的配置都在 Java 对象本身中,因此配置简洁明了。
  2. 配置分散,有时难以维护。
  3. Java 类不再是 POJO。

这两种方法各有利弊,但由开发人员决定适合他们需求的正确方法。

【讨论】:

    猜你喜欢
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多