J'ai un problème pour injecter le Validator
dans le bean d'application Spring lors de la tentative de validation d'un modèle à l'aide de JSR-303 (hibernate-validator)
Ma classe de configuration principale est:
@EnableAutoConfiguration
@EnableWebMvc // <---
@EnableJpaRepositories("com.example")
@EntityScan("com.example")
public class MainConfiguration {
Selon les javadocs:
/**
* Provide a custom {@link Validator} instead of the one created by default.
* The default implementation, assuming JSR-303 is on the classpath, is:
* {@link org.springframework.validation.beanvalidation.LocalValidatorFactoryBean}.
* Leave the return value as {@code null} to keep the default.
*/
Validator getValidator();
Hibernate-validator est sur le chemin de classe. J'essaie de l'injecter dans le référentiel:
@Repository
public class UserRepositoryImpl implements UserRepositoryCustom {
@Autowired
private Validator validator;
Exception levée:
No qualifying bean of type [javax.validation.Validator] found for dependency:
MISE À JOUR:
La solution partielle consiste à définir cela dans la classe de configuration principale:
@Bean
public Validator validator() {
return new org.springframework.validation.beanvalidation.LocalValidatorFactoryBean();
}
Mais les tests d'intégration (ceux qui nécessitent org.springframework.test.context.web.WebAppConfiguration;
annotation et utilisation de la logique de validation) échouent.
Vous devez déclarer un bean de type LocalValidatorFactoryBean
comme ceci:
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
en XML ou
@Bean
public javax.validation.Validator localValidatorFactoryBean() {
return new LocalValidatorFactoryBean();
}
dans Java Config.
This une partie de la documentation Spring contient tous les détails