web-dev-qa-db-ja.com

Spring Bootと複数の外部設定ファイル

クラスパスからロードしたいプロパティファイルが複数あります。 /src/main/resourcesの下にある1つのデフォルトセットがmyapp.jarの下にあります。私のspringcontextは、ファイルがクラスパス上にあることを期待しています。すなわち.

<util:properties id="Job1Props"
    location="classpath:job1.properties"></util:properties>

<util:properties id="Job2Props"
    location="classpath:job2.properties"></util:properties>

これらのプロパティを外部セットで上書きするオプションも必要です。 cwdに外部設定フォルダがあります。春のブートドキュメントのconfigフォルダはクラスパスにあるはずです。しかし、それがそこからのapplicaiton.propertiesまたはconfig内のすべてのプロパティを上書きするだけであるかどうかはdocからは明らかではありません。

私がそれをテストしたとき、application.propertiesだけが拾われ、残りのプロパティは/src/main/resourcesから拾い上げられます。私はそれらをspring.config.locationへのコンマ区切りリストとして供給しようとしました、しかしデフォルトセットはまだ上書きされていません。

複数の外部設定ファイルをデフォルトの設定ファイルに上書きさせるにはどうすればよいですか?

回避策として、私は現在、コマンドラインで提供するapp.config.location(アプリ固有のプロパティ)を使用しました。すなわち

Java -jar myapp.jar app.config.location=file:./config

そして私は私のapplicationcontextをに変更しました

<util:properties id="Job2Props"
    location="{app.config.location}/job2.properties"></util:properties>

これが、アプリケーションのロード中にファイルとクラスパスを分離する方法です。
編集:

//psuedo code

if (StringUtils.isBlank(app.config.location)) {
            System.setProperty(APP_CONFIG_LOCATION, "classpath:");
}

application.propertiesファイルの場合のように、上記の回避策を使用しないで、クラスパス上のすべての外部設定ファイルをSpringで上書きするようにしたいです。

101
nir

Spring Bootを使用する場合、プロパティは次の順序でロードされます(Spring Bootリファレンスガイドの Externalized Configuration を参照)。

  1. コマンドライン引数.
  2. Javaシステムプロパティ(System.getProperties())。
  3. OS環境変数.
  4. JavaのJNDI属性:comp/env
  5. ランダムなプロパティのみを持つRandomValuePropertySource。
  6. パッケージ化されたjar以外のアプリケーションプロパティ(YAMLおよびプロファイルバリアントを含むapplication.properties)。
  7. あなたのjarファイルの中にパッケージ化されたアプリケーションプロパティ(YAMLとプロファイルバリアントを含むapplication.properties).
  8. @Configurationクラスの@PropertySourceアノテーション。
  9. 既定のプロパティ(SpringApplication.setDefaultPropertiesを使用して指定).

プロパティを解決するとき(つまり@Value("${myprop}")解決は逆の順序で行われます(つまり9から始まります)。

さまざまなファイルを追加するには、spring.config.locationプロパティを使用します。これは、プロパティファイルまたはファイルの場所(ディレクトリ)のカンマ区切りリストを取ります。

-Dspring.config.location=your/config/dir/

上記のものはapplication.propertiesファイルのために調べられるディレクトリを追加するでしょう。

-Dspring.config.location=classpath:job1.properties,classpath:job2.properties

これにより、ロードされたファイルに2つのプロパティファイルが追加されます。

デフォルトの設定ファイルと場所は、追加で指定されたspring.config.locationの前にロードされます。これは、後者が常に以前のもので設定されたプロパティを上書きすることを意味します。 (Spring Bootリファレンスガイドの this section も参照)。

spring.config.locationが(ファイルではなく)ディレクトリを含む場合、それらは/で終わるべきです(そしてロードされる前にspring.config.nameから生成された名前が追加されます)。 classpath:,classpath:/config,file:,file:config/の値に関係なく、デフォルトの検索パスspring.config.locationが常に使用されます。このようにして、アプリケーションのデフォルト値をapplication.properties(またはspring.config.nameで選択したその他の基本名)に設定し、実行時に別のファイルで上書きしてデフォルトを維持できます。

更新:spring.config.locationの動作はデフォルトに追加するのではなくオーバーライドするようになりました。デフォルトを維持するにはspring.config.additional-locationを使用する必要があります。これは1.xから2.xへの動作の変更です

120
M. Deinum

Springブートでは、spring.config.locationは機能します。カンマ区切りのプロパティファイルを指定するだけです。

以下のコードを見てください

@PropertySource(ignoreResourceNotFound=true,value="classpath:jdbc-${spring.profiles.active}.properties")
public class DBConfig{

     @Value("${jdbc.Host}")
        private String jdbcHostName;
     }
}

デフォルトのバージョンのjdbc.propertiesをアプリケーション内に置くことができます。外部バージョンはこれに設定できます。

Java -jar target/myapp.jar --spring.config.location=classpath:file:///C:/Apps/springtest/jdbc.properties,classpath:file:///C:/Apps/springtest/jdbc-dev.properties

Spring.profiles.activeプロパティを使用して設定されたプロファイル値に基づいて、jdbc.Hostの値が取得されます。だから(Windows上)

set spring.profiles.active=dev

jdbc.Hostはjdbc-dev.propertiesから値を取ります。

for

set spring.profiles.active=default

jdbc.Hostはjdbc.propertiesから値を取ります。

28
ganesh jadhav

PropertyPlaceholderConfigurerを見てください、私はそれがアノテーションより使用するのが明らかにわかります。

例えば.

@Configuration
public class PropertiesConfiguration {


    @Bean
    public PropertyPlaceholderConfigurer properties() {
        final PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
//        ppc.setIgnoreUnresolvablePlaceholders(true);
        ppc.setIgnoreResourceNotFound(true);

        final List<Resource> resourceLst = new ArrayList<Resource>();

        resourceLst.add(new ClassPathResource("myapp_base.properties"));
        resourceLst.add(new FileSystemResource("/etc/myapp/overriding.propertie"));
        resourceLst.add(new ClassPathResource("myapp_test.properties"));
        resourceLst.add(new ClassPathResource("myapp_developer_overrides.properties")); // for Developer debugging.

        ppc.setLocations(resourceLst.toArray(new Resource[]{}));

        return ppc;
    }
20
user3206144

Spring boot 1.XとSpring Boot 2.Xは Externalized Configuration に関して同じオプションと振る舞いを提供しません。

M. Deinumの非常に良い答えは、Spring Boot 1の仕様に関するものです。
ここでSpring Boot 2用にアップデートします。

環境プロパティのソースと順序

Spring Boot 2は賢明な値の上書きを可能にするように設計された非常に特別なPropertySourceの順序を使います。プロパティは次の順序で考慮されます。

  • ホームディレクトリのdevtoolsグローバル設定プロパティ(devtoolsがアクティブな場合は〜/ .spring-boot-devtools.properties)。

  • テストの@TestPropertySourceアノテーション。

  • テストの@SpringBootTest#propertiesアノテーション属性。コマンドライン引数.

  • SPRING_APPLICATION_JSONからのプロパティ(環境変数またはシステムプロパティに埋め込まれたインラインJSON)。

  • ServletConfig初期化パラメータ。

  • ServletContext初期化パラメータ。

  • JNDIはJava:comp/envの属性です。

  • Javaシステムのプロパティ(System.getProperties())。

  • OS環境変数.

  • ランダムなプロパティのみを持つRandomValuePropertySource

  • パッケージ化されたjarファイル以外のプロファイル固有のアプリケーションプロパティ(application-{profile}.propertiesおよびYAMLの亜種)。

  • あなたのjarファイルの中にパッケージ化されたプロファイル特有のアプリケーションプロパティ(application-{profile}.propertiesとYAMLの亜種)。

  • パッケージ化されたjarファイルの外部にあるアプリケーションプロパティ(application.propertiesおよびYAMLの亜種)。

  • あなたのjarファイルの中にパッケージされたアプリケーションプロパティ(application.propertiesとYAMLの亜種)。

  • @PropertySourceクラスの@Configurationアノテーション。デフォルトのプロパティ(SpringApplication.setDefaultPropertiesの設定で指定).

外部プロパティファイルを指定するには、これらのオプションに興味があるはずです。

  • パッケージ化されたjarファイル以外のプロファイル固有のアプリケーションプロパティ(application-{profile}.propertiesおよびYAMLの亜種)。

  • パッケージ化されたjarファイルの外部にあるアプリケーションプロパティ(application.propertiesおよびYAMLの亜種)。

  • @PropertySourceクラスの@Configurationアノテーション。デフォルトのプロパティ(SpringApplication.setDefaultPropertiesの設定で指定).

あなたはこれら3つのオプションのうちの1つのみを使うか、あなたの要求に従ってそれらを組み合わせることができます。
たとえば、非常に単純なケースではプロファイル固有のプロパティのみを使用することで十分ですが、他のケースではプロファイル固有のプロパティ、デフォルトプロパティ、および@PropertySourceの両方を使用することができます。

application.propertiesファイルのデフォルトの場所

application.propertiesファイル(およびその亜種)について、デフォルトではSpringは次の順序でそれらを読み込み、それらからプロパティを追加します。

  • 現在のディレクトリの/ configサブディレクトリ

  • 現在のディレクトリ

  • クラスパス/設定パッケージ

  • クラスパスルート

優先順位が高いほど文字通りです。
classpath:/,classpath:/config/,file:./,file:./config/

特定の名前のプロパティファイルの使い方は?

デフォルトの場所は必ずしも十分ではありません。デフォルトのファイル名(application.properties)のようなデフォルトの場所は適していないかもしれません。その上、OPの質問のように、あなたはapplication.properties(およびその変種)以外の複数の設定ファイルを指定する必要があるかもしれません。
そのため、spring.config.nameでは十分ではありません。

この場合は、spring.config.location環境プロパティ(ディレクトリの場所またはファイルパスのカンマ区切りのリスト)を使用して、明示的な場所を指定する必要があります。
ファイル名のパターンについて自由になるには、ディレクトリのリストよりもファイルパスのリストを優先してください。
たとえば、次のようにします。

Java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

この方法は、フォルダを指定するだけの最も冗長な方法ですが、構成ファイルを非常に細かく指定し、効果的に使用されるプロパティを明確に文書化する方法でもあります。

spring.config.locationはデフォルトの場所を追加する代わりにデフォルトの場所に置き換えます

Spring Boot 1では、spring.config.location引数はSpring環境の指定された場所を追加します。
しかし、Spring Boot 2から、spring.config.locationは、 ドキュメント内の のように、Springが使用するデフォルトの場所をSpring環境内の指定された場所に置き換えます。

カスタム設定の場所がspring.config.locationを使用して設定されている場合、それらはデフォルトの場所を置き換えます。たとえば、spring.config.locationが値classpath:/custom-config/file:./custom-config/で構成されている場合、検索順序は次のようになります。

  1. file:./custom-config/

  2. classpath:custom-config/

spring.config.locationは、application.propertiesファイルを明示的に指定する必要があることを確認するための方法になりました。
application.propertiesファイルをパッケージ化することが想定されていないより一般的なJARファイルの場合、これはかなりいい方法です。

Spring Boot 2の使用中にspring.config.locationの古い動作を維持するには、spring.config.additional-locationの代わりに新しいspring.config.locationプロパティを使用して、まだ場所 ドキュメントに記載されている を追加することができます。

あるいは、spring.config.additional-locationを使用してカスタム構成の場所を構成すると、デフォルトの場所に加えてそれらが使用されます。


実際には

したがって、OPの質問のように、指定する2つの外部プロパティファイルと1つのプロパティファイルがuber jarに含まれているとします。

指定した設定ファイルのみを使用するには

-Dspring.config.location=classpath:/job1.properties,classpath:/job2.properties,classpath:/applications.properties   

デフォルトの場所でこれらに設定ファイルを追加するには:

-Dspring.config.additional-location=classpath:/job1.properties,classpath:/job2.properties

最後の例では、デフォルトの場所にはclasspath:/applications.propertiesがありません。デフォルトの場所は上書きされずに拡張されています。

12
davidxxx

私は同じ問題を抱えていました。 Spring Bootのapplication.properties検出と同様に、起動時に内部設定ファイルを外部ファイルで上書きできるようにしたいと思いました。私の場合は、私のアプリケーションユーザーが格納されているuser.propertiesファイルです。

私の要求:

次の場所からファイルを(この順序で)ロードします。

  1. クラスパス
  2. 現在のディレクトリの/ configサブディレクトリ。
  3. 現在のディレクトリ
  4. 起動時にコマンドラインパラメータで指定されたディレクトリまたはファイルの場所から

私は以下の解決策を思いついた。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.PathResource;
import org.springframework.core.io.Resource;

import Java.io.IOException;
import Java.util.Properties;

import static Java.util.Arrays.stream;

@Configuration
public class PropertiesConfig {

    private static final Logger LOG = LoggerFactory.getLogger(PropertiesConfig.class);

    private final static String PROPERTIES_FILENAME = "user.properties";

    @Value("${properties.location:}")
    private String propertiesLocation;

    @Bean
    Properties userProperties() throws IOException {
        final Resource[] possiblePropertiesResources = {
                new ClassPathResource(PROPERTIES_FILENAME),
                new PathResource("config/" + PROPERTIES_FILENAME),
                new PathResource(PROPERTIES_FILENAME),
                new PathResource(getCustomPath())
        };
        // Find the last existing properties location to emulate spring boot application.properties discovery
        final Resource propertiesResource = stream(possiblePropertiesResources)
                .filter(Resource::exists)
                .reduce((previous, current) -> current)
                .get();
        final Properties userProperties = new Properties();

        userProperties.load(propertiesResource.getInputStream());

        LOG.info("Using {} as user resource", propertiesResource);

        return userProperties;
    }

    private String getCustomPath() {
        return propertiesLocation.endsWith(".properties") ? propertiesLocation : propertiesLocation + PROPERTIES_FILENAME;
    }

}

これでアプリケーションはクラスパスリソースを使用しますが、他の指定された場所でもリソースをチェックします。存在する最後のリソースが選択され使用されます。私は私のボートを浮かべるプロパティの場所を使うためにJava -jar myapp.jar --properties.location =/directory/myproperties.propertiesで私のアプリを起動することができます。

ここで重要な詳細:@Valueアノテーションのproperties.locationのデフォルト値として空のStringを使用して、プロパティーが設定されていないときのエラーを回避します。

Properties.locationの規則は、次のとおりです。properties.locationとして、ディレクトリまたはプロパティファイルへのパスを使用します。

特定のプロパティのみをオーバーライドする場合は、setIgnoreResourceNotFound(true)を持つPropertiesFactoryBeanをロケーションとして設定されたリソース配列とともに使用できます。

私はこの解決策が複数のファイルを扱うために拡張されることができると確信しています...

EDIT

ここに私の複数のファイルに対する解決策があります:)以前と同様に、これはPropertiesFactoryBeanと組み合わせることができます。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.PathResource;
import org.springframework.core.io.Resource;

import Java.io.IOException;
import Java.util.Map;
import Java.util.Properties;

import static Java.util.Arrays.stream;
import static Java.util.stream.Collectors.toMap;

@Configuration
class PropertiesConfig {

    private final static Logger LOG = LoggerFactory.getLogger(PropertiesConfig.class);
    private final static String[] PROPERTIES_FILENAMES = {"job1.properties", "job2.properties", "job3.properties"};

    @Value("${properties.location:}")
    private String propertiesLocation;

    @Bean
    Map<String, Properties> myProperties() {
        return stream(PROPERTIES_FILENAMES)
                .collect(toMap(filename -> filename, this::loadProperties));
    }

    private Properties loadProperties(final String filename) {
        final Resource[] possiblePropertiesResources = {
                new ClassPathResource(filename),
                new PathResource("config/" + filename),
                new PathResource(filename),
                new PathResource(getCustomPath(filename))
        };
        final Resource resource = stream(possiblePropertiesResources)
                .filter(Resource::exists)
                .reduce((previous, current) -> current)
                .get();
        final Properties properties = new Properties();

        try {
            properties.load(resource.getInputStream());
        } catch(final IOException exception) {
            throw new RuntimeException(exception);
        }

        LOG.info("Using {} as user resource", resource);

        return properties;
    }

    private String getCustomPath(final String filename) {
        return propertiesLocation.endsWith(".properties") ? propertiesLocation : propertiesLocation + filename;
    }

}
7
mxsb

これは、スプリングブーツを使用した簡単な方法です。

TestClass.Java

@Configuration
@Profile("one")
@PropertySource("file:/{selected location}/app.properties")
public class TestClass {

    @Autowired
    Environment env;

    @Bean
    public boolean test() {
        System.out.println(env.getProperty("test.one"));
        return true;
    }
}

app.propertiesコンテキスト、選択した場所

test.one = 1234

あなたのスプリングブートアプリケーション

@SpringBootApplication

public class TestApplication {

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

そして定義済みのapplication.propertiesコンテキスト

spring.profiles.active = one

spring.profiles.active=プロファイル名/名前{カンマ区切り}を設定するだけで、好きなだけ設定クラスを記述し、それらを有効/無効にすることができます

春のブートは素晴らしいと思うので、慣れるのに時間がかかるだけなので、自分のフィールドでも@Valueを使用できることを言及する価値があります。

@Value("${test.one}")
String str;
6
Farzan Skt

スプリングブートを使用すると、異なる環境用に異なるプロファイルを作成できます。たとえば、実稼働環境、QA環境、およびローカル環境用に別々のプロパティファイルを作成できます。

私のローカルマシンに従った設定を持つapplication-local.propertiesファイルは

spring.profiles.active=local

spring.data.mongodb.Host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=users
spring.data.mongodb.username=humble_freak
spring.data.mongodb.password=freakone

spring.rabbitmq.Host=localhost
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.port=5672

rabbitmq.publish=true

同様に、application-prod.propertiesとapplication-qa.propertiesを必要な数だけプロパティファイルに書くことができます。

それから、異なる環境でアプリケーションを起動するためのスクリプトを書きます。

mvn spring-boot:run -Drun.profiles=local
mvn spring-boot:run -Drun.profiles=qa
mvn spring-boot:run -Drun.profiles=prod
6
Humble Freak

私はこれと同じような問題を抱えていて、そして最後に原因を考え出しました:application.propertiesファイルは間違った所有権とrwx属性を持っていました。 Tomcatが起動したときには、application.propertiesファイルは正しい場所にありましたが、別のユーザーが所有していました。

$ chmod 766 application.properties

$ chown Tomcat application.properties
5
robjwilkins

Application.propertiesファイルに指定されている値をオーバーライドしたい場合は、アプリケーションの実行中にアクティブプロファイルを変更し、そのプロファイル用のアプリケーションプロパティファイルを作成できます。たとえば、アクティブプロファイル「override」を指定してから、/ tmpの下に「application-override.properties」という名前の新しいアプリケーションプロパティファイルを作成したとします。

Java -jar yourApp.jar --spring.profiles.active="override" --spring.config.location="file:/tmp/,classpath:/" 

Spring.config.locationで指定された値は逆の順序で評価されます。したがって、私の例では、classpatが最初に評価され、次にファイルの値が評価されます。

Jarファイルと "application-override.properties"ファイルが現在のディレクトリにある場合は、実際には単純に使用できます。

Java -jar yourApp.jar --spring.profiles.active="override"

spring Bootがあなたのためにプロパティファイルを見つけるので

1
acaruci

複数のファイルを定義できるようにする@mxsbソリューションの修正版で、私の場合はこれらはymlファイルです。

私のapplication-dev.ymlに、-dev.ymlを含むすべてのymlをインジェクトでき​​るようにするこの設定を追加しました。これは特定のファイルのリストにもなります。 "クラスパス:/test/test.yml、クラスパス:/test2/test.yml"

application:
  properties:
    locations: "classpath*:/**/*-dev.yml"

これはプロパティマップを取得するのに役立ちます。

@Configuration

public class PropertiesConfig {

private final static Logger LOG = LoggerFactory.getLogger(PropertiesConfig.class);

@Value("${application.properties.locations}")
private String[] locations;

@Autowired
private ResourceLoader rl;

@Bean
Map<String, Properties> myProperties() {
    return stream(locations)
            .collect(toMap(filename -> filename, this::loadProperties));
}

private Properties loadProperties(final String filename) {

    YamlPropertySourceLoader loader = new YamlPropertySourceLoader();
    try {
        final Resource[] possiblePropertiesResources = ResourcePatternUtils.getResourcePatternResolver(rl).getResources(filename);
        final Properties properties = new Properties();
        stream(possiblePropertiesResources)
                .filter(Resource::exists)
                .map(resource1 -> {
                    try {
                        return loader.load(resource1.getFilename(), resource1);
                    } catch (IOException e) {
                        throw new RuntimeException(e);
                    }
                }).flatMap(l -> l.stream())
                .forEach(propertySource -> {
                    Map source = ((MapPropertySource) propertySource).getSource();
                    properties.putAll(source);
                });

        return properties;
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}
}

しかし、私の場合のように、プロファイルごとにymlファイルを分割してロードし、それをBeanの初期化前にSpring構成に直接注入する必要がありました。

config
    - application.yml
    - application-dev.yml
    - application-prod.yml
management
    - management-dev.yml
    - management-prod.yml

...あなたはアイデアを得ます

コンポーネントが少し異なります

@Component
public class PropertiesConfigurer extends     PropertySourcesPlaceholderConfigurer
    implements EnvironmentAware, InitializingBean {

private final static Logger LOG = LoggerFactory.getLogger(PropertiesConfigurer.class);

private String[] locations;

@Autowired
private ResourceLoader rl;
private Environment environment;

@Override
public void setEnvironment(Environment environment) {
    // save off Environment for later use
    this.environment = environment;
    super.setEnvironment(environment);
}

@Override
public void afterPropertiesSet() throws Exception {
    // Copy property sources to Environment
    MutablePropertySources envPropSources = ((ConfigurableEnvironment) environment).getPropertySources();
    envPropSources.forEach(propertySource -> {
        if (propertySource.containsProperty("application.properties.locations")) {
            locations = ((String) propertySource.getProperty("application.properties.locations")).split(",");
            stream(locations).forEach(filename -> loadProperties(filename).forEach(source ->{
                envPropSources.addFirst(source);
            }));
        }
    });
}


private List<PropertySource> loadProperties(final String filename) {
    YamlPropertySourceLoader loader = new YamlPropertySourceLoader();
    try {
        final Resource[] possiblePropertiesResources = ResourcePatternUtils.getResourcePatternResolver(rl).getResources(filename);
        final Properties properties = new Properties();
        return stream(possiblePropertiesResources)
                .filter(Resource::exists)
                .map(resource1 -> {
                    try {
                        return loader.load(resource1.getFilename(), resource1);
                    } catch (IOException e) {
                        throw new RuntimeException(e);
                    }
                }).flatMap(l -> l.stream())
                .collect(Collectors.toList());
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

}

0
Codewarrior

私はこれが従うのに便利なパターンであることがわかりました:

@RunWith(SpringRunner)
@SpringBootTest(classes = [ TestConfiguration, MyApplication ],
        properties = [
                "spring.config.name=application-MyTest_LowerImportance,application-MyTest_MostImportant"
                ,"debug=true", "trace=true"
        ]
)

ここでは "application-MyTest_LowerImportance.yml"と "application-MyTest_MostImportant.yml"を使うために "application.yml"の使用をオーバーライドします。
(Springは.propertiesファイルも探します)

必要に応じてコメントアウトできるように、デバッグとトレースの設定も別の行に追加されています。]

デバッグ/トレースは、Springがロードするすべてのファイルとロードしようとするファイルの名前をダンプするので、非常に便利です。
実行時にコンソールに次のような行が表示されます。

TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./config/application-MyTest_MostImportant.properties' (file:./config/application-MyTest_MostImportant.properties) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./config/application-MyTest_MostImportant.xml' (file:./config/application-MyTest_MostImportant.xml) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./config/application-MyTest_MostImportant.yml' (file:./config/application-MyTest_MostImportant.yml) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./config/application-MyTest_MostImportant.yaml' (file:./config/application-MyTest_MostImportant.yaml) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./config/application-MyTest_LowerImportance.properties' (file:./config/application-MyTest_LowerImportance.properties) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./config/application-MyTest_LowerImportance.xml' (file:./config/application-MyTest_LowerImportance.xml) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./config/application-MyTest_LowerImportance.yml' (file:./config/application-MyTest_LowerImportance.yml) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./config/application-MyTest_LowerImportance.yaml' (file:./config/application-MyTest_LowerImportance.yaml) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./application-MyTest_MostImportant.properties' (file:./application-MyTest_MostImportant.properties) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./application-MyTest_MostImportant.xml' (file:./application-MyTest_MostImportant.xml) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./application-MyTest_MostImportant.yml' (file:./application-MyTest_MostImportant.yml) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./application-MyTest_MostImportant.yaml' (file:./application-MyTest_MostImportant.yaml) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./application-MyTest_LowerImportance.properties' (file:./application-MyTest_LowerImportance.properties) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./application-MyTest_LowerImportance.xml' (file:./application-MyTest_LowerImportance.xml) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./application-MyTest_LowerImportance.yml' (file:./application-MyTest_LowerImportance.yml) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./application-MyTest_LowerImportance.yaml' (file:./application-MyTest_LowerImportance.yaml) resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/config/application-MyTest_MostImportant.properties' resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/config/application-MyTest_MostImportant.xml' resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/config/application-MyTest_MostImportant.yml' resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/config/application-MyTest_MostImportant.yaml' resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/config/application-MyTest_LowerImportance.properties' resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/config/application-MyTest_LowerImportance.xml' resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/config/application-MyTest_LowerImportance.yml' resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/config/application-MyTest_LowerImportance.yaml' resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/application-MyTest_MostImportant.properties' resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/application-MyTest_MostImportant.xml' resource not found
DEBUG 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Loaded config file 'file:/Users/xxx/dev/myproject/target/test-classes/application-MyTest_MostImportant.yml' (classpath:/application-MyTest_MostImportant.yml)
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/application-MyTest_MostImportant.yaml' resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/application-MyTest_LowerImportance.properties' resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/application-MyTest_LowerImportance.xml' resource not found
DEBUG 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Loaded config file 'file:/Users/xxx/dev/myproject/target/test-classes/application-MyTest_LowerImportance.yml' (classpath:/application-MyTest_LowerImportance.yml)
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'classpath:/application-MyTest_LowerImportance.yaml' resource not found
TRACE 93941 --- [   main] o.s.b.c.c.ConfigFileApplicationListener  : Skipped config file 'file:./config/application-MyTest_MostImportant-test.properties' (file:./config/application-MyTest_MostImportant-test.properties) resource not found
0
davidfrancis