考虑到自Spring引入基于Java的配置以来已经有很长时间了,我想应该有人问过这个问题。但是由于SOF上没有出现这样的结果,因此,我将进一步说明这一点。
基于Java的配置比基于XML的配置有什么优势吗?
(相反,我可以看到XML config的一个优势。可以根据部署应用程序的环境(例如登台,测试或生产)在编译后更改XML Config。我发现这在Java中是不可能的配置)
答案 0 :(得分:0)
主要优点是安全类型,这意味着JDK编译器可以帮助检查我们在编译时是否正确配置了Bean的属性(即,使用正确的名称和正确的数据类型设置属性)。
这还意味着我们可以使用IDE轻松重构bean配置(例如重命名属性名称等)并搜索bean使用情况。
例如,假设我们有Car
和Engine
:
public class Car {
private Integer id;
private Engine engine;
}
public class Engine {
}
在下面的基于Java的配置中,我们知道,设置在Car中的Engine必须是Engine类型,并且Car的ID必须是Integer。否则,代码将无法编译,IDE会立即警告我们(例如,由于错误,您将String设置为Car的ID)。我们知道配置是错误的,不需要引导spring上下文。
@Configuration
public class AppConfig {
@Bean
public Engine engine(){
return new Engine();
}
public Car car(Engine engine){
Car car = new Car();
car.setId(12345);
car.setEngine(engine);
return engine;
}
}
与XML配置进行比较时,您只能知道在引导Spring上下文后,您错误地配置了bean。