2015-11-25 6 views
5

これはケーキだとわかっていますが、私はどこにもいません。私の春のブートアプリでSpringブートでコンストラクタインジェクションでYAMLプロパティを使用するにはどうすればよいですか?

は、application.ymlファイルでは、私はそうのようなエントリがあります。

some: 
    constructor: 
     property: value 

をそして私は春のサービス(これは偽物ですが、問題を示しています)があります。

package somepackage; 

@Service 
public class DummyService { 
    public DummyService(@Value("${some.constructor.property}") String path) {} 
} 

スタートアップは、しかし、失敗します。

org.springframework.beans.factory.BeanCreationException:エラー ファイル '...(クラス ファイル)で定義された' dummyService 'という名前のBeanを作成しています...]:Beanのインスタンス化に失敗しました。入れ子にされた例外は org.springframework.beans.BeanInstantiationException: に失敗しましたinstantiate [somepackage.DummyService]:デフォルトコンストラクタが見つかりませんでした。 ネストされた例外はjava.lang.NoSuchMethodExceptionです:。 somepackage.DummyService()

は、どのように私はそれが非空のコンストラクタを使用する必要があり、それはYAMLファイルからそのコンストラクタのパラメータを取得する必要があることを春説得できますか?注:私はXML Beanの設定ファイルなどを使用していないので、そうしたくないでしょう。

答えて

2

コンストラクタに@Autowired注釈を挿入するだけです。

@Autowired 
public DummyService(@Value("${some.constructor.property}") String path) {} 
+0

ああ、で覆われています。どうもありがとう。 – user1953555

0

そして、ちょうど場合には他の誰かがScalaでこれを実行しようとしている - 私は本当にやろうとしたが、スカラ座でそれをしようとする前に、Javaで答えを取得したいたものである - これは動作します:

@Service 
class DummyService @Autowired()(@Value("${some.constructor.property}") val path: String) { 

} 

これは私が間違った場所に@Autowiredたthis SO case for scala constructor autowiring.

関連する問題