Spring Boot 默认不支持 application.xml,仅自动加载 application.properties 或 application.yml;若需 XML 配置,须改名后用 @ImportResource 导入,或手动解析,推荐优先使用 YAML。

Spring Boot 默认不支持直接读取 application.xml 文件,它原生只识别 application.properties 或 application.yml 作为主 配置文件。XML 格式不是 Spring Boot 的标准配置方式,但你可以通过扩展方式加载自定义 XML 配置文件(比如 config.xml、beans.xml 等),只是不能命名为 application.xml 并期望被自动加载。
Spring Boot 不会自动加载 application.xml
Spring Boot 启动时,会按顺序扫描 classpath 下的以下文件:
application.properties-
application.yml(或application.yaml)
它 不会 查找或解析 application.xml。如果你把配置写在 application.xml 中,启动时完全不会生效,也不会报错——只是被忽略。
想用 XML 配置?推荐改用标准命名或手动加载
如果你坚持使用 XML 格式,有两类常见做法:
- 改名 + @ImportResource:把 XML 文件改成如
spring-config.xml,放在src/main/resources/下,然后在启动类或配置类上加注解:@ImportResource("classpath:spring-config.xml") - 纯 Java 配置替代:用
@Configuration+@Bean定义组件,更符合 Spring Boot 风格,也便于类型安全和 IDE 支持
手动读取任意 XML 文件(如 config.xml)
如果 XML 是纯数据配置(非 Spring Bean 定义),比如保存数据库连接参数、开关项等,可用传统方式解析:
- 用
Resource获取文件:resourceLoader.getResource("classpath:config.xml") - 配合
DocumentBuilder或 Jackson / JAXB(需定义对应实体类)解析内容 - 建议封装成
@Component类,在@PostConstruct中初始化,或通过@ConfigurationProperties绑定(需先转为 Map/List 结构)
真正需要的是外部化配置?用 application.yml 更稳妥
绝大多数场景下,XML 并不比 YAML 或 Properties 更适合做应用配置。YAML 支持层级、列表、profile 激活(spring.profiles.active),且 Spring Boot 全链路支持(包括 @ConfigurationProperties 自动绑定、IDE 提示、配置元数据生成)。
例如:
database: url: jdbc:mysql://localhost:3306/mydb username: root pool: max-size: 20
对应 Java 类用 @ConfigurationProperties("database") 即可自动注入,简洁又可靠。
基本上就这些。别硬套 application.xml,Spring Boot 的设计哲学是约定优于配置,顺着它的习惯走,反而更省事。