Spring JPA Custom Inidction Бин Validator - PullRequest
       6

Spring JPA Custom Inidction Бин Validator

0 голосов
/ 04 сентября 2018

Любой компонент, добавленный в реализацию CustomValidator, всегда имеет значение null. Я использую Spring Boot 2, приложение представляет собой REST API, я не использую MVC.

Я перепробовал все, что читал об этом, но пока безуспешно.

эта тема, например, у меня не работает

Должен ли я подтвердить в противном случае? Я застрял с этим уже 2 дня.

Это мой класс Config:



    @Configuration
    public class Beans {

        @Bean
        public BCryptPasswordEncoder passwordEncoder() {

            return new BCryptPasswordEncoder();
        }

        @Bean
        public MessageSource messageSource() {

            ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
            messageSource.setBasename("classpath:idiomas/idioma");
            messageSource.setUseCodeAsDefaultMessage(true);
            messageSource.setDefaultEncoding("UTF-8");

            return messageSource;
        }

        @Bean
        public LocaleResolver localeResolver() {

            AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
            resolver.setDefaultLocale(new Locale("es"));

            return resolver;
        }

        @Bean
        public LocalValidatorFactoryBean getValidator() {

            LocalValidatorFactoryBean validatorFactoryBean = new LocalValidatorFactoryBean();
            validatorFactoryBean.setValidationMessageSource(messageSource());

            return validatorFactoryBean;
        }

        @Bean
        public CommonsRequestLoggingFilter logFilter() {

            CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
            filter.setIncludeQueryString(true);
            filter.setIncludePayload(true);
            filter.setMaxPayloadLength(10000);
            filter.setIncludeHeaders(true);
            filter.setAfterMessagePrefix("REQUEST: ");
            return filter;
        }
    }


Мой CustomValidator выглядит так:


public class AlmacenValidator implements ConstraintValidator {

    @Autowired
    private AlmacenService servicio;

    @Autowired
    private ApplicationContext contexto;

    @Override
    public void initialize(AlmacenValido constraintAnnotation) {

    }

    @Override
    public boolean isValid(Almacen item, ConstraintValidatorContext context) {

        //Database calls
    }

JPA Сущность:



    @Entity
    @AlmacenValido
    @Table(name = "almacenes")
    public class Almacen {

        //Entity fields
    }


Аннотация:



    @Documented
    @Retention(RUNTIME)
    @Target({ TYPE, FIELD, ANNOTATION_TYPE, PARAMETER })
    @Constraint(validatedBy = AlmacenValidator.class)
    public @interface AlmacenValido {

        String message() default "{validacion.almacen}";

        Class[] groups() default {};

        Class[] payload() default {};
    }


1 Ответ

0 голосов
/ 04 сентября 2018

Я создал тестовый пример для вас. Пожалуйста, проверьте это https://github.com/alex-petrov81/stackoverflow-answers/tree/master/validation-bean-injection

...