クラスパスからロードしたいプロパティファイルが複数あります。 /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で上書きするようにしたいです。
Spring Bootを使用する場合、プロパティは次の順序でロードされます(Spring Bootリファレンスガイドの Externalized Configuration を参照)。
プロパティを解決するとき(つまり@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への動作の変更です
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から値を取ります。
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;
}
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/
で構成されている場合、検索順序は次のようになります。
file:./custom-config/
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
がありません。デフォルトの場所は上書きされずに拡張されています。
私は同じ問題を抱えていました。 Spring Bootのapplication.properties検出と同様に、起動時に内部設定ファイルを外部ファイルで上書きできるようにしたいと思いました。私の場合は、私のアプリケーションユーザーが格納されているuser.propertiesファイルです。
私の要求:
次の場所からファイルを(この順序で)ロードします。
私は以下の解決策を思いついた。
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;
}
}
これは、スプリングブーツを使用した簡単な方法です。
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;
スプリングブートを使用すると、異なる環境用に異なるプロファイルを作成できます。たとえば、実稼働環境、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
私はこれと同じような問題を抱えていて、そして最後に原因を考え出しました:application.propertiesファイルは間違った所有権とrwx属性を持っていました。 Tomcatが起動したときには、application.propertiesファイルは正しい場所にありましたが、別のユーザーが所有していました。
$ chmod 766 application.properties
$ chown Tomcat application.properties
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があなたのためにプロパティファイルを見つけるので
複数のファイルを定義できるようにする@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);
}
}
}
私はこれが従うのに便利なパターンであることがわかりました:
@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