为什么在Spring Boot中,相比XML配置,Java配置更受欢迎?

4
我是新手,正在使用spring-boot构建基于rest的应用程序,并正在使用spring-security设置安全性。据我了解,可以使用xml配置或Java配置来设置spring-security。
然而,在spring-boot文档中我发现了以下内容https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-configuration-classes.html。它支持使用Java Config而不是XML config。Java配置的更改需要重新编译,但是这让我想知道为什么文档支持Java Config。
  1. 配置类 Spring Boot 偏爱基于 Java 的配置。虽然可以使用 XML 配置调用 SpringApplication.run(),但我们通常建议您的主要配置源是 @Configuration 类。通常定义 main 方法的类也是作为主要 @Configuration 的好选择。

许多 Spring 配置示例已经在互联网上发布,使用了 XML 配置。如果可能的话,始终尝试使用等效的基于 Java 的配置。搜索 Enable* 注释可能是一个很好的起点。

15.1 导入其他配置类 您不需要将所有 @Configuration 放入单个类中。@Import 注释可用于导入其他配置类。或者,您可以使用 @ComponentScan 自动拾取所有 Spring 组件,包括 @Configuration 类。

15.2 导入 XML 配置 如果您确实必须使用基于 XML 的配置,我们建议您仍然从 @Configuration 类开始。然后,您可以使用额外的 @ImportResource 注释来加载 XML 配置文件。


XML配置是一个好的方法。为什么?因为你不需要重新编译Java代码,只需更改配置并重新启动服务器。@Configuration是代码内部的配置。如果您更改了某些值,则需要重新编译->部署->启动服务器。 - Sh4m
@Sh4m,我同意你的观点。之所以有这个问题,是因为当我在网上查看Spring Boot的示例时,我总是看到配置是由Java类来管理而不是XML。因此,我开始这样考虑,并想确保哪种方式才是正确的。 - SaAn
1
XML配置没有任何问题。最近,Java配置和注释更受欢迎,但这通常只是个人偏好。 - Kyle Anderson
8
除非你的 XML 配置是应用程序外部的(在我看来这是一件不好的事情),否则你仍然需要重新构建你的构件并对其进行测试等。使用 Java 或 XML 并不会改变这种情况。此外,使用基于 Java 的配置,你可以使用所有 Java 提供的优秀特性来配置你的应用程序(类型安全、if/else、switch 等等),更不用说在 Java 中新的条件 bean 支持要比 XML 好得多了。 - M. Deinum
1个回答

7

以下是一些优点:

  1. Java是类型安全的。如果您配置正确的bean类限定符,则编译器将报告问题。

  2. 基于XML的配置可能会迅速增长,尽管我们可以拆分和导入,但仍然有点麻烦。

  3. 查找要简单得多,重构将变得轻松愉快。查找bean定义将更容易。

仍有一些人喜欢使用XML配置并继续使用它。

有关更多信息,请参见Java配置的优势以及其他一些原因


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接