2016-09-15 74 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。

我也檢查了項目結構中的類位置。要百分之百地確定它的位置,我已經把它與@Services打包在一起,這些服務被掃描並且運行良好。沒有效果。

我知道這似乎是非常簡單的任務,我知道這個注入是可能的(我在工作中已經看到它在項目中完成了),但不知怎的,我無法使它在我的項目中工作。

也許我缺少配置中的東西?感謝您的任何幫助:)

回答

0

我相信你的問題是,當你在@Configuration註釋的類中使用@Autowired時,你只是引用一個在單獨配置文件中定義的bean,那就是它必須是在另一個文件中用@Configuration註解聲明。

如果要引用引用另一個隱含的豆如您驗證@Component來註解你需要做的是在另一個隱含的豆還註釋與隱含的符號,如@Component,@Service,@Controller等

@Autowired本身應該工作,除非你有多個類實現相同的接口。那是你需要使用@Qualifier的時候。

+0

你弄錯了:)我正在嘗試使用@ Autowired/@Inject/@無論類裏面用@RestController註解。我做了一個小小的修改,使其更加清晰。 –

+0

對不起,我明白了,我會看看我能否找到更好的答案。 – megalucio

+0

這個答案可以有任何幫助嗎? http://stackoverflow.com/a/23615478/370209 或者,使用純代碼配置的更完整示例: https://teamtreehouse.com/library/displaying-validation-messages – DmytroL