我想知道表演热中这些情况之间更好的事情是什么:
@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
实现ApplicationContextAware
来回答这个问题,并且内部有一个ApplicationContext
。
基于此处可用的弹簧文档,您可以阅读的对配置Spring的注释比XML更好吗?,但作为比较。
基于XML的配置;
- 可以与没有任何注释的普通旧Java对象(POJO)一起使用。这意味着Java对象中没有其他依赖关系。源代码永远不会用于弹簧配置,并且可以在其他地方重复使用源代码。
- 当您使用预编译的JAR文件时,这种方法更好
- 配置是集中式的,易于维护
基于注释的配置;
- 所有相关的配置都在Java对象本身中,因此配置是干净和简洁的。
- 配置是分散的,有时很难维护。
- Java类不再是Pojos。
这两种方法都有其优点和缺点,但由开发人员决定适合其需求的正确方法。