2016-09-15 7 views
2

JHipster v.3.5.1を使用してアプリケーションを生成することから始めました。SpringのValidator実装をインジェクトする方法は?

しばらくして、POSTで作成されたエンティティでビジネスロジック検証を実行するためにバリデータを作成する必要がありました。だから私は作っ:

@Component 
public class MyValidator implements Validator 

その後、私は(@RestControllerで注釈さ)私のコントローラに注入しようとしたが、私が試した方法に関係なく、それは常にそのようなものになった:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.my.app.service.domain.MyValidator] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. 
私は、Beanを作成し、

@Autowired 
private MyValidator myValidator; 

@Inject 
private MyValidator myValidator; 

@Autowired 
@Qualifier("myValidator") 
private MyValidator myValidator; (with @Component("myValidator") on class) 

@Inject 
@Qualifier("myValidator") 
private MyValidator myValidator; (with @Component("myValidator") on class) 

//Below was inserted in class annotated with @Configuration 
@Bean 
public MyValidator myValidator() { 
    return new MyValidator(); 
} 

それを注入しようとした

つの方法は、しかし、私はそれを試してみました - それが失敗しました。私はいつもNoSuchBeanDefinitionExceptionを持っているか、フィールド値がnullに設定されています。

私はまた、プロジェクト構造内のクラスの場所を確認しました。 100%確実に配置されていることを確認するために、スキャンしてうまく動作する@Servicesをパッケージに入れました。無効。

私はそれがかなり簡単な作業であることを知っています。私はこの注入が可能であることを知っています(私はそれが私の仕事でプロジェクトで行われているのを見ました)が、どういうわけか私のプロジェクトでそれを働かせることができません。

多分設定に何か不足していますか?助けをありがとう:)

答えて

0

@Configurationで注釈が付けられたクラスの中で@Autowiredを使用すると、別の設定ファイルで定義されているBeanを参照しているだけです@Configurationアノテーションとともに別のファイルで宣言されています。

@Componentでアノテーションされたバリデーターなどの別の暗黙的なBeanを参照する場合は、@Component、@Service、@Controllerなどの暗黙的な表記で注釈付けされた別の暗黙のBeanで行う必要があります。

@Autowiredは、同じインターフェイスを実装する複数のクラスを持たない限り、単独で動作するはずです。それはあなたが@Qualifierを使う必要があるときです。

+0

あなたはそれが間違っている:) @RowControllerで注釈された@ Autowired/@ Inject/@何でも内部クラスを使用しようとしています。私はそれをより明確にするために小さな編集をしました。 –

+0

よろしくお願いします。もっと良い答えが見つかるかどうかわかります。 – megalucio

+0

この回答は役に立ちましたか? http://stackoverflow.com/a/23615478/370209 コード専用設定のさらに完全な例: https://teamtreehouse.com/library/displaying-validation-messages – DmytroL

関連する問題