基于Spring Java的配置优于基于XML的配置?

时间:2019-08-29 00:44:04

标签: java spring spring-boot spring-mvc spring-ioc

考虑到自Spring引入基于Java的配置以来已经有很长时间了,我想应该有人问过这个问题。但是由于SOF上没有出现这样的结果,因此,我将进一步说明这一点。

基于Java的配置比基于XML的配置有什么优势吗?

(相反,我可以看到XML config的一个优势。可以根据部署应用程序的环境(例如登台,测试或生产)在编译后更改XML Config。我发现这在Java中是不可能的配置)

1 个答案:

答案 0 :(得分:0)

主要优点是安全类型,这意味着JDK编译器可以帮助检查我们在编译时是否正确配置了Bean的属性(即,使用正确的名称和正确的数据类型设置属性)。

这还意味着我们可以使用IDE轻松重构bean配置(例如重命名属性名称等)并搜索bean使用情况。

例如,假设我们有CarEngine

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。