【问题标题】:How to change external application.properties file name?如何更改外部 application.properties 文件名?
【发布时间】:2018-03-13 05:13:14
【问题描述】:

我正在使用spring boot并将其部署为独立tomcat中的战争。下面是我的应用程序类。

public class APIApplication extends SpringBootServletInitializer  {
    public static void main(String[] args) {

        configureApplication(new SpringApplicationBuilder()).run(args);
    }

    public static SpringApplicationBuilder configureApplication(SpringApplicationBuilder builder) {
        return builder.sources(APIApplication .class).properties(getProperties());
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(APIApplication .class);
    }

    public static Properties getProperties() {
        Properties props = new Properties();
         props.setProperty("spring.config.location",
         "/home/config_directory/");
        props.setProperty("spring.config.name", "apiapplication");
        return props;

    }


}

但这不起作用并且不会从 /home/config_directory/apiapplication.properties

中读取

感谢任何帮助。

编辑

也试过了

public static void main(String[] args) {
        System.setProperty("spring.config.location","/home/config_directory/");
        System.setProperty("spring.config.name", "apiapplication.properties");

        SpringApplication.run(DriverguidanceapiApplication.class, args);
        //configureApplication(new SpringApplicationBuilder()).run(args);
    }

也没有用。

【问题讨论】:

  • 你的文件名是'apiapplication.properties',然后确保你在'spring.config.name'中准确传递。另外......这些属性需要很早就传递给 JVM(根据文档),尝试使用 -D 标志运行 JVM 并在那里传递您的配置选项。可以在这里阅读:docs.spring.io/spring-boot/docs/current/reference/html/…
  • 是的,文件名是 apiapplication.properties
  • 您是否尝试过在启动时将 -D 传递给 JVM?
  • 我在 statndalone tomcat 中部署为 war 文件。而不是作为 Fat Jar
  • 好吧,我很困惑。你能尝试用远程调试运行tomcat,只在启动时调试spring吗?

标签: spring spring-boot application.properties


【解决方案1】:

无需手动配置哥们!! Spring 在这里为您提供@PropertySource 注释。

我将分享我的代码 sn-p 我用过你正在寻找的东西。

package XXXX;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;

/**
 * Created by Pratik Ambani.
 */
@Configuration
@PropertySource(value = {"classpath:default.properties", "classpath:application.properties"}, ignoreResourceNotFound = true, name = "myServerConfigs")
public class PropertySourceExample {

    @Value("${dev.baseURL}")
    private String localUrl;

    @Value("${sit.baseURL}")
    private String serverUrl;

    @Bean
    public static PropertySourcesPlaceholderConfigurer xxxpropertyConfig() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    @Bean
    protected String database() {
        Resource resource = new Resource();
        resource.setUrl(restAPIUrl);
        return resource;
    }
}

但是等等,这些 dev.baseUrl 和 sit.baseUrl 值是什么?它们来自哪里?看看我的属性文件。

application.properties

dev.baseURL=http://localhost:7012

default.properties

sit.baseURL=http://myserver:7012

瞧! 我能够从多个文件中读取值。 快乐编码。愿代码祝福你。 :)

【讨论】:

    【解决方案2】:

    我建议你使用@PropertySource 注解并自动装配一个Enviroment 对象。检查示例:

        @PropertySource("file:/home/config_directory/")
        public class testClass{
            @Autowired
            private Environment environment;
            public DataSource dataSource(){
    
              BasicDataSource basicDataSource = new BasicDataSource();   
              basicDataSource.setDriverClassName(environment
                                 .getProperty("database_manager.db.driver"));
              return basicDataSource;
          }
        }
    

    【讨论】:

      【解决方案3】:

      https://stackoverflow.com/a/31027378/6503697 by Daniel Mora 所述,使用@PropertySource 并不是最佳选择。 Daniel 给出了一个很好的解决方案,但如果你想使用 spring.config.name 属性,请参阅我的回答:https://stackoverflow.com/a/56445915/6503697

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-12
        • 2015-09-10
        • 2014-08-09
        • 2017-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多