假设您无法重构代码以完全切换到注释(因为显然这样您的代码将更具可读性和可维护性),我认为您可以使用使用 xml 配置的 hibernate 框架的 bean 验证实现。您应该首先将META-INF/validation.xml
文件添加到最终工件中。它会有这样的结构:
<validation-config
xmlns="http://xmlns.jcp.org/xml/ns/validation/configuration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/validation/configuration
http://xmlns.jcp.org/xml/ns/validation/configuration/validation-configuration-2.0.xsd"
version="2.0">
<default-provider>com.acme.ValidationProvider</default-provider>
...
<constraint-mapping>META-INF/validation/constraints-car.xml</constraint-mapping>
...
</validation-config>
您可以查看其文档以了解其架构的详细信息。该文件中的一个重要元素是<constraint-mapping>
允许您定义包含实际约束定义的文件的地址。在里面你可以像这样定义你的约束:
<constraint-mappings
xmlns="http://xmlns.jcp.org/xml/ns/validation/mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/validation/mapping
http://xmlns.jcp.org/xml/ns/validation/mapping/validation-mapping-2.0.xsd"
version="2.0">
<default-package>com.your.project.model.package</default-package>
<bean class="Person" ignore-annotations="true">
<field name="firstName">
<constraint annotation="javax.validation.constraints.Size">
<element name="max">80</element>
</constraint>
</field>
</bean>
</constraint-mappings>
我没有运行这段代码,但我想你明白了;)