2017-10-20 13 views
0

私はapplication.propertiesからプロパティをフェッチするConfiguration.classを持っています。spring-bootでは、spring beanなしでプロパティを取得できますか?

@Component 
public class Configuration { 

    @Value("${someValue}") 
    public String someValue; 
} 

私は、プロパティを必要としFetcherと呼ばれる別のクラスを、持っています。もちろん

class Fetcher { 

    @Autowired 
    private Configuration configuration; 

    public void doSomethingWithSomeValue() { 
     System.out.println(configuration.someValue); 
    } 
} 

Fetcherは春の豆​​(私はそれに@Component/@Service/@Repositoryを追加しませんでしたが)ではないので、上記のコードは失敗します。私の質問は、をFetcherに入れることができますか?

+0

多分、設定ファイルを地図に読み込んでそこから取得しますか? –

+0

https://stackoverflow.com/a/18486178/1032167とhttps://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/ApplicationContextAware.htmlをご覧ください – varren

答えて

3

いいえ、はいです。

これは、Springと依存関係注入の全体的なアイデアだからです。 Spring ApplicationContextにアクセスできるものを使用する必要があります。

はい、パブリッシュ・サブスクライブ・パターンを使用するか、コンテキスト認識ビーンの一部をシングルトンにして、それらがすべての必要なプロパティーを公開できるようにすることができます。しかし、それはSpringコンテキストにアクセスできるオブジェクトへの委譲に過ぎません。それは犯罪ではなく、武器を売って実際のショットを作る人にお金を払っているということです。

関連する問題