2016-11-21 29 views
0

我創建了簡單的非mvc項目並添加了spring-boot-starter-validation依賴項。當我嘗試注入javax.validation.Validator時,出現錯誤org.springframework.beans.factory.NoSuchBeanDefinitionExceptionSpring啓動器驗證和驗證器注入

這是否意味着spring-boot-starter-validation不會提供任何默認驗證器,即LocalValidatorFactoryBean,而且我總是必須像在普通項目中一樣自行創建它,而不使用spring引導?

@Component 
public class ExampleService{ 

    @Autowired 
    private Validator validator; 

    public void someMethod(){ 
      //validation 
    } 

} 

注入失敗,如果Validator來自javax.validation或org.springframework.validation包,則無關緊要。

+0

您可以添加更多的代碼和日誌:缺少什麼bean? – terjekid

+0

我已經添加了最簡單的例子。 Spring Starter Project>驗證依賴關係,以及這個簡單的組件。注射失敗。 – swch

回答

0

沒有Beans提供開箱即用spring-boot-starter-validation因此爲什麼您遇到NoSuchBeanDefinitionException

請參閱以下rationale此起動,直接從馬口:

此前,只有啓動該提供的驗證是 spring-boot-starter-web,其中包含Hibernate Validator和Tomcat的EL實現。這使得用戶編寫非web應用程序來找出他們自己的依賴關係。他們會因爲Hibernate驗證者對於EL實現的需要而有時會遇到困難,因爲它們會讓他們感覺不舒服。

此提交添加了一個新的啓動程序spring-boot-starter-validation,其中 提供了Hibernate Validator和Tomcat的EL實現。 spring-boot-starter-web已更新爲依賴此啓動程序 ,而不是直接依賴Hibernate Validator。