相关疑难解决方法(0)

Spring Boot应用程序中的环境特定application.properties文件

在我的Spring Boot应用程序中,我想创建特定于环境的属性文件.战争中我的应用程序的打包类型,我在嵌入式tomcat中执行它.我使用sts并从sts本身执行main.

  1. 我可以拥有像应用程序一样的特定于环境的属性文件 - $ {env-value} .properties?

在上面的例子中,env-value的值为local/devl/test/prod

  1. 在哪里设置env值文件?对于local,我可以通过sts将其设置为jvm参数

  2. 谁在S​​pring Boot应用程序中读取application.properties.

  3. 如何加载特定于环境的属性文件?对于ex - 如果我在环境特定属性文件中设置数据库uid,pwd,schema等,那么数据源是否能够理解其中的属性?

  4. 我可以同时使用application.properties和application-local.properties文件吗?

spring spring-boot

63
推荐指数
3
解决办法
8万
查看次数

可以通过Spring配置文件选择@PropertySources吗?

我有一个Spring 3.1 @Configuration需要一个属性foo来构建一个bean.属性是在属性中定义的,defaults.propertiesoverrides.properties如果应用程序具有活动的overrideSpring配置文件,则可以由属性覆盖.

没有覆盖,代码看起来像这样,并且工作......

@Configuration
@PropertySource("classpath:defaults.properties")
public class MyConfiguration {

    @Autowired
    private Environment environment;

    @Bean
    public Bean bean() {
        ...
        // this.environment.getRequiredProperty("foo");
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我想一个@PropertySource用于classpath:overrides.properties对队伍@Profile("overrides").有没有人对如何实现这一点有任何想法?我考虑过的一些选项是重复的@Configuration,但这会违反DRY或程序化操作ConfigurableEnvironment,但我不确定environment.getPropertySources.addFirst()调用的去向.

如果我直接注入属性@Value,但是在我使用EnvironmentgetRequiredProperty()方法时,将以下内容放在XML配置中.

<context:property-placeholder ignore-unresolvable="true" location="classpath:defaults.properties"/>

<beans profile="overrides">
    <context:property-placeholder ignore-unresolvable="true" order="0"
                                  location="classpath:overrides.properties"/>
</beans>
Run Code Online (Sandbox Code Playgroud)

更新

如果您现在尝试执行此操作,请查看Spring Boot的YAML支持,尤其是"使用YAML而不是属性"部分.那里的配置文件支持会使这个问题没有实际意义,但还没有@PropertySource支持.

spring

39
推荐指数
5
解决办法
3万
查看次数

标签 统计

spring ×2

spring-boot ×1