良い一日、みんな。私は、Springbootを使用しているときに私のクラスにサービスをautowiringすることに関して質問をします。これは、注入クラスがあるSpringBootで@Autowireサービスを行う方法
package com.example.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DatabaseAccountService implements AccountService {
private final RiskAssessor riskAssessor;
@Autowired
public DatabaseAccountService(RiskAssessor riskAssessor) {
this.riskAssessor = riskAssessor;
}
// ...
}
:私は、インターネット上だけでなく、Springboot仕様で見てきた例はすべて、同様の何か(Springbootバージョン1.5.7仕様からの抜粋を取る)を行いますコンストラクタを@Autowiringすることにより、そのコンストラクタを介してプロパティを取得します。
applicationContext.getAutowireCapableBeanFactory().autowireBean(Object.class)
:私はこれらの2つの方法が機能するために、私は、私はこの方法を使用する必要があると言われている、仕事
@Autowired
private final RiskAssessor riskAssessor
しかし、:別の形は、このような性質を@Autowireすることです彼らは@Autowired注釈が機能するために必要なことを教えてくれました。
私の質問は、なぜ@Autowireが正しく機能するようにする簡単な注釈がないのですか? (@AutowiredClassのようなもの)。上記のメソッドはあまりにも冗長で覚えにくいので、Grailsでちょうどdef someService
と言っているように、サービスを注入するために@Autowiredをクラスに追加するより良い方法があるはずです。
あなたの質問は少し不明です...実際に 'applicationContext.getAutowireCapableBeanFactory()。autowireBean(DatabaseAccountService .class) '? 「はい」の場合は、その必要はありません。 「コンポーネントスキャン」を正しく設定するだけです。 – Tom
私は特別なwrtアプリケーションコンテキストを行う必要はないと思います。 RiskAssessor BeanがSpringの設定のどこかに作成されていることを確認してください。 –
Springブートでは、Mainクラスのパッケージまたはそのサブパッケージに入っている限り、必要はありません。 –