Ta reguła oznacza użycie javax.validation.Validation.buildDefaultValidatorFactory() LUB Validation.byDefaultProvider().configure().buildValidatorFactory() . Liberty beanValidation-1.0 oraz beanValidation-1.1 Implementacje są udostępniane przez mechanizm sprawdzania poprawności komponentu bean Apache . W środowisku Java EE 8 implementacja sprawdzania poprawności komponentu bean udostępniana przez składnik Liberty beanValidation-2.0 został zmieniony na analizator poprawności Hibernate . Implementacja Apache Bean Validation wymaga, aby aplikacja utworzyła niezarządzany obiekt ValidatorFactory, a fabryka ConstraintValidatorFactory zwraca instancję ConstraintValidator zarządzaną przez CDI. Jednak składnik Hibernate Validator obsługuje tylko generowanie obiektów ConstraintValidator zarządzanych przez CDI przy użyciu domyślnej fabryki ValidatorFactory udostępnianej przez środowisko wykonawcze serwera. Ten zarządzany przez serwer obiekt ValidatorFactory można uzyskać za pomocą komendy @Resource , @Inject lub bezpośrednie wyszukiwanie JNDI.
Aplikacje mogą widzieć zmianę w zachowaniu podczas używania javax.validation.Validation.buildDefaultValidatorFactory() LUB Validation.byDefaultProvider().configure().buildValidatorFactory() Należy zauważyć, że inne metody dostosowywania mogą być wywoływane przed buildValidatorFactory() jest wywoływana, na przykład messageInterpolator() , traversableResolver() , parameterNameProvider() lub constraintValidatorFactory() .
Podsumowując, użytkownicy, którzy oczekują obiektów zwróconych przez ConstraintValidatorFactory Aby zarządzać CDI, należy zaimplementować zmiany w istniejącym kodzie sprawdzania poprawności komponentu bean.
Poniższy kod stanowi przykład sprawdzania poprawności komponentu bean, który powinien zostać refaktoryzowany:
//Original application behavior
Validator validator = Validation.byDefaultProvider().configure().messageInterpolator(messageResourceInterpolator).buildValidatorFactory().getValidator();
Poniższy przykład ilustruje poprawkę problematycznego kodu:
//Recommended application behavior (potential Automated Fix)
@Inject //@Resource or a jndi lookup of java:comp/ValidatorFactory could also be used to obtain the container's default ValidatorFactory
ValidatorFactory validatorFactory;
Validator validator = validatorFactory.usingContext().messageInterpolator(messageResourceInterpolator).getValidator();
Więcej informacji na temat konfigurowania sprawdzania poprawności w produkcie WebSphere Liberty zawiera dokumentacja Bean Validation 2.0.