2017-07-18 12 views
1

なぜEnvironmentインタフェースを使用する場合にコンフィグレーションBeanを必要としないのか分かりませんか?私はこの場合、任意のBeanを構成する必要はありません、なぜたとえば、私のクラスで@Autowired環境に環境変数「ファイル名」私が持っているを使用する環境インタフェース用コンフィグレーションBeanが不要な理由

@Autowired 
private Environment env; 

public BigDecimal getRate(String currency, Date rateDate) { 
    fileName = env.getProperty("filename"); 
    System.out.println(fileName); 
    return ... 
} 

は、あなたは私を説明できますか?なぜ私はそれが必要ではない春のコードやドキュメントをチェックする方法。事前に感謝します

+0

これは、あなた自身や 'ResourceLoader'を設定する必要のない' ApplicationContext'のように、いくつかの特別なオブジェクトの一つです。 –

答えて

3

すべての組み込みのApplicationContextの実装には、事前登録されたBean定義のセットが付属しています。これらはhere、マニュアルに記載されています:BeanFactoryApplicationContextEnvironmentResourceLoaderApplicationEventPublisher、およびMessageSource:また 解決可能な依存関係をよく知られているインタフェースのための@Autowiredを使用することができます

。これらの インターフェイスおよびそれらの拡張インターフェイス( ConfigurableApplicationContextまたはResourcePatternResolverなど)は、特別な設定を必要とせずに自動的に解決されます( )。

@Autowiredが動作しているので、これらのタイプの豆はApplicationContext#getBean(..)になります。言い換えれば、彼らはすべて独自のbean定義を取得します。 Beanの実装は、初期化されるコンテキストのタイプによって異なります。

関連する問題