You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让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

额外注意事项

  • 如果你用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

火山引擎 最新活动