Spring Boot アプリケーションを使用しています。一部の@Component
クラス@Value
ではフィールドがロードされますが、他のクラスでは常にnull
.
/が作成された後に@Value
(s) がロードされるようです。@Bean
@Component
のプロパティ ファイルからいくつかの値をロードする必要があります@Bean
。
何か提案はありますか?
Spring Boot アプリケーションを使用しています。一部の@Component
クラス@Value
ではフィールドがロードされますが、他のクラスでは常にnull
.
/が作成された後に@Value
(s) がロードされるようです。@Bean
@Component
のプロパティ ファイルからいくつかの値をロードする必要があります@Bean
。
何か提案はありますか?
プロパティ (およびすべての Bean 依存関係) は、Bean の構築 (コンストラクターの実行) 後に注入されます。
そこで必要な場合は、コンストラクター注入を使用できます。
@Component
public class SomeBean {
private String prop;
@Autowired
public SomeBean(@Value("${some.prop}") String prop) {
this.prop = prop;
//use it here
}
}
もう 1 つのオプションは@PostConstruct
、Bean が作成され、すべての依存関係とプロパティ値が解決された後に実行されるというアノテーションが付けられたメソッドにコンストラクター ロジックを移動することです。
やってみました:
@Component
@PropertySource("file:/your/file/path")
public class MyBean {
private @Value("${property}") String property;
...
}
別の考えられる理由は、「@Value」行が、これらのプロパティ/値を必要とする行の下にあることです。
この問題のデバッグに多くの時間を費やしたところ、行の順序が重要であることがわかりました!