如何让Spring Boot应用识别并读取Resources目录下config文件夹的配置,以及迁移XML配置文件夹至该目录与application.properties同级
关于Spring Boot识别Resources目录下config文件夹的问题解答
问题1:是否存在可行方法,使Spring Boot应用能够识别Resources目录下的config文件夹,并在需要时从中获取配置?
当然可以!Spring Boot本身就默认支持读取src/main/resources/config目录下的配置文件,甚至这个目录的优先级还比src/main/resources根目录更高(当存在同名配置文件时,config目录下的会覆盖根目录的)。不管是属性文件(比如application.properties/application.yml)还是其他类型的配置文件(比如XML、JSON),只要你正确配置或者遵循Spring Boot的约定,都能被正常识别并读取。
问题2:将src同级的config文件夹迁移至Resources目录下,与application.properties同级,是否可以实现?若可以,具体操作方式是什么?
完全没问题,我分两种常见场景给你说明具体操作:
场景1:迁移属性配置文件(比如自定义的.properties/.yml)
- 直接把原
config文件夹里的属性文件移动到src/main/resources/config目录下即可。Spring Boot会自动扫描这个目录,你可以通过@Value或者@ConfigurationProperties正常注入配置值,不需要额外修改代码。 - 如果你的属性文件名不是
application开头(比如custom-config.properties),可以在application.properties里添加配置导入:spring.config.import=classpath:config/custom-config.properties;或者在配置类上用注解指定加载:@PropertySource("classpath:config/custom-config.properties")。
场景2:迁移XML配置文件(比如Spring bean配置、MyBatis mapper XML等)
- Spring bean配置XML:如果是用来定义Spring bean的XML文件,在你的配置类上添加
@ImportResource("classpath:config/your-bean-config.xml")注解,Spring就会加载这个XML里的bean定义。 - MyBatis mapper XML:如果是MyBatis的映射文件,有两种配置方式:
- 配置类方式:在SqlSessionFactory的配置代码中指定mapper位置:
sqlSessionFactory.setMapperLocations( new PathMatchingResourcePatternResolver().getResources("classpath:config/mapper/**/*.xml") ); - 配置文件方式:在
application.properties里添加:mybatis.mapper-locations=classpath:config/mapper/**/*.xml
- 配置类方式:在SqlSessionFactory的配置代码中指定mapper位置:
额外注意事项
- 如果你用Maven/Gradle构建项目,
src/main/resources是默认资源目录,移动后的文件会被自动打包到jar/war的BOOT-INF/classes/config目录下,运行时Spring Boot能正常读取。 - 如果是多环境配置(比如
config/application-dev.properties),Spring Boot会根据你设置的spring.profiles.active自动加载对应环境的配置。
内容的提问来源于stack exchange,提问作者Abdelrahman Ashraf




