spring boot在哪里配置默认的application.properties

时间:2016-09-21 06:19:46

标签: spring spring-boot

默认情况下,Spring Boot会自动从classpath:/application.properties

加载属性

我想知道这个自动配置源代码在哪里。 我想从我的应用中排除。 IE:@EnableAutoConfiguration(exclude=XXXXAutoconfiguration.class)

原因是: 因为我无法使用@PropertySource

通过外部属性覆盖默认的application.properties
@SpringBootApplication
@ComponentScan(basePackages = {"com.test.green.ws"})
@PropertySource(value = {"classpath:/application.properties", "file:/opt/green-ws/application.properties"})
public class GreenWSApplication {

    public static void main(String[] args) {
        SpringApplication.run(GreenWSApplication.class, args);
    }
}

1 个答案:

答案 0 :(得分:3)

有许多方法可以覆盖属性键而不会禁用整个外部化配置功能;而这实际上就是目标。

您可以看到here the order the properties are considered in。例如,您可以将该外部属性文件添加到打包的JAR旁边的config文件夹中,甚至configure the file location yourself

现在,如果您真的想要禁用所有这些(并且Boot团队强烈建议不要这样做),您可以注册自己的EnvironmentPostProcessorsee here)并从PropertySources中移除MutablePropertySources,您可以使用configurableEnvironment. getPropertySources()抓取。

没有更简单的方法可以做到这一点,因为:

  1. 这是在应用程序初始阶段,在自动配置
  2. 之前
  3. 这不是你应该做的事情,因为它会有很多副作用