プロファイルに環境固有のプロパティベースをロードしたい。しかし、私のメインブートアプリは別のパッケージに入っています。スプリングブート - クラスが別のパッケージに存在する場合、環境固有のプロパティをロードする方法
-project構造
-projテスト
-src/main/java
-com.x - AppBoot.java (Spring boot main app)
-com.x.service - Subscriber.java
-src/main/resources
-application-dev.properties
-application-test.properties
application-dev.properties
mq.hostname=spring profile dev
application-test.properties
mq.hostname=spring profile test
AppBoot.java
package com.x
@SpringBootApplication(scanBasePackages = { "com.x" })
public class AppBoot {
@Autowired
private Subscriber subscriber;
@Value("${mq.hostname}")
private String hostName;
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext context =
SpringApplication.run(AppBoot.class, args);
log.debug("hostName... in Main.java " + hostName);
}
}
package com.x.service
@Component
public class Subscriber {
@Value("${mq.hostname}")
private String hostName;
public Subscriber() {
log.debug("hostName... in Subscriber .java " + hostName);
}
}
通報 - AppBoot.javaでlog.debug("hostName... in Main.java " + hostName);
プロパティ値で印刷なっています。ただし、Subscriber.java内の log.debug("hostName... in Subscriber .java " + hostName)
はnullとして返されます。
実行時に、アプリケーションのファイルをロードするための@Profile値を提供できます。春は自動的にプロファイルに基づいてプロパティを挿入します –
Yogi