0

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.htmlによると、application-${profile}.properties を使用してさまざまな application.properties ファイルをロードできますアクティブなプロファイルを設定します。application.properties が変更されている場合、それは素晴らしいことですが、これを行う必要がある batch.properties の場合はどうでしょうか? 複数のアクティブなプロファイルがある場合はどうなりますか? 例えば:

spring.active.profile=oracle,hornetq,redis

私のプロパティは次を使用してロードされます:

<bean id="placeholderProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
    depends-on="datasourceProperty">
    <property name="locations" ref="propLocations" />
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
    <property name="ignoreResourceNotFound" value="true" />
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="order" value="1" />
</bean>
<util:list id="propLocations">
    <value>classpath:batch-default.properties</value>
    <value>classpath*:batch-${profile}.properties</value>
</util:list>

私は、batch-${profile}.properties がアクティブなプロファイルのいずれかを含むすべてのプロパティ ファイルを検索しようとすると想定していたので、batch-oracle.properties、batch-redis.properties、batch-hornetq.properties

見つかったものは使用し、見つからないものは無視されます。ただし、これは当てはまらないようで、${profile} が見つからないだけです。

アクティブなプロファイルが 1 つしかない場合は、${spring.active.profile} を使用するだけで問題ありませんが、アプリケーションをコンポーネント化するにつれてプロファイルを徐々に作成しているため、プロファイルを使用してプロパティをロードしたいと考えています。プロファイル固有のプロパティ プレースホルダー Bean の束。

----- 更新 ----- 「M. Deinum」のコメントに基づいて、次のことを試しました。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes={BatchBootApplication.class})
@WebIntegrationTest(value={"spring.config.name=application,batch"})
@ActiveProfiles("hsql")
public class BatchBootApplicationTest {

    @Test
    public void testAppContextLoads() {
    }

}

プロパティファイルが表示されます。

4

1 に答える 1

3

デフォルトでは、Spring Boot は をロードしapplication.properties、そのロード メカニズムでapplication-{profile}.properties(またはymlファイル) もロードします。Spring Boot リファレンス ガイドの外部構成セクションを参照してください。

ファイルのロードをオーバーライド/拡張​​するには、spring.config.name環境変数を指定できます。この変数は、カンマ区切りの文字列を使用して、複数のプロパティ ファイルを識別できます。ここでサンプルを参照してください。

したがって、自分で何かをハックしようとする代わりに、Spring Boot を使用してください。アプリケーションを開始するときに追加するだけ-Dspring.config.name=application,batch,other fileで、Spring Boot は指定されたすべての名前にロードルールを適用します。

于 2015-10-28T08:50:16.360 に答える