Java Spring将application.properties和valius从外部属性添加到类路径,以及如何禁用它? 问题(?)

Java Spring将application.properties和valius从外部属性添加到类路径,以及如何禁用它? 问题(?),java,spring,Java,Spring,由于数据库配置和API键,我将应用程序属性设置为外部属性,但通过一些springmagic它们被读取,只有springvalius被保留并放置到类路径中,稍后在部署时覆盖外部属性。那么,我如何禁用这个“特性”,使它不包含jar中的属性呢 我用来使属性外部化的代码 @Bean 公共静态属性资源占位符配置器属性资源占位符配置器(){ 属性资源占位符配置器属性= 新属性资源占位符配置器(); setLocation(新文件系统资源(“program.properties”); properties.s

由于数据库配置和API键,我将应用程序属性设置为外部属性,但通过一些
springmagic
它们被读取,只有springvalius被保留并放置到类路径中,稍后在部署时覆盖外部属性。那么,我如何禁用这个“特性”,使它不包含jar中的属性呢

我用来使属性外部化的代码
@Bean
公共静态属性资源占位符配置器属性资源占位符配置器(){
属性资源占位符配置器属性=
新属性资源占位符配置器();
setLocation(新文件系统资源(“program.properties”);
properties.setIgnoreResourceNotFound(false);
归还财产;
}
我怀疑PropertySourcesPlaceholderConfigurer的占位符部分有差异,但我的非母语英语研究技能找不到任何结果

编辑
  • 它与捆绑的tomcat打包成一个罐子
  • 属性文件位于jar的home目录中
    • 我找到了解决办法

      介绍 如果使用问题
      “如何使application.properties外部化?”
      中最常见的代码段,Spring将编译文件内的属性。这可能是有意误导,但我们不要反驳

      解决方案 首先编辑用于配置spring的代码,因为这是正确的解决方案(至少对我来说是这样)

      SpringApplication=新的SpringApplication(application.class);
      属性=新属性();
      试一试{
      加载(新文件阅读器(“application.properties”);
      application.setDefaultProperties(属性);
      application.run(args);
      }捕获(IOE异常){
      e、 printStackTrace();
      }
      
      其次,您需要编辑maven配置以不包含该文件

      
      org.springframework.boot
      springbootmaven插件
      假的
      
      如果不起作用,请检查目标目录application.properties是否仍保留在那里。


      希望这对和我一样头痛的人有用。:)

      在项目文件夹中,属性文件位于何处?有没有可能它被打包在您的jar/war中?用infoQuick test更新了帖子:手动从jar中删除属性文件,然后尝试运行代码。它应该读取外部文件,或者抛出错误。