私は今、この2つを混同しています。 Hibernate Validator 6がBean Validation 2.0仕様のリファレンス実装であることは知っています。グループ化、エラーメッセージの国際化、カスタムメソッド検証などをサポートしています。質問は、Spring 5はこれらの機能をサポートしていますか、それともHibernate Validator 6のみが残っていますか?
提供されているSpring Validationではなく、Hibernate ValidatorとSpring Bootプロジェクトを一緒に使用する必要があるのはなぜですか?私の会社には、サードパーティのライブラリを使用する正当な理由が必要です。
オンラインの参考例はすべて、Hibernate Validatorを使用することを提案していますが、Springの検証にはあまり見当たりません。他のリンクをアドバイスするか、ポイントしてください。
Spring Validation documentation
Bean Validationでは、通常、単一のjavax.validation.Validatorインスタンスが、検証制約を宣言するすべてのモデルオブジェクトを検証します。このようなJSR-303をサポートするValidatorをSpring MVCで構成するには、Hibernate ValidatorなどのBean Validationプロバイダーをクラスパスに追加するだけです
spring-boot-starter-web
依存関係を持つサンプルスプリングブートプロジェクトを作成することで、それを確認できます。実際に、クラスパスにhibernate-validator依存関係を追加します
以下に、春のチュートリアルのjsr-303へのリンクをいくつか示します。
Hibernate Validationは、JSR 303:Bean Validation APIの実装です。 Springには検証パッケージがあります(JSR 303:Bean Validation APIをサポートしていますが、適切な実装はサポートしていません)。
org.springframework.validation.Validator
はjavax.validation.Validator
とは異なることに注意してください。
here のような単純なorg.springframework.validation.Validator
を実装するクラスを作成するだけで、Spring Validationを実行できます。ただし、JSR 303:Bean Validation APIの仕様に従う必要がある場合は、Hibernate Validatorを使用します。
詳細を入力してください。
1)(一部の)検証を実行する場合、これはspringを使用して実行できます。 (以下はスニペットです):
import org.springframework.validation.Validator;
class MyService{
Validator validator = new MyValidator();
//perform validation
}
class MyValidator implements Validator{
// Your own validation logic. You may use ValidationUtils to help.
}
2)(JSR 303仕様)検証を実行する場合は、Hibernateのようなプロバイダーが必要です。
import javax.validation.Validator;
class MyService{
ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); //Bootstraping
Validator validator = factory.getValidator();
//perform validation
}
上記のブートストラッププロセスは、Spring Frameworkでサポートされています。あなたがする必要があるのは、春にLocalValidatorFactoryBean
のBeanを作成させることです
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
このBeanを注入します。
import javax.validation.Validator;
@Service
public class MyService {
@Autowired
private Validator validator;
}