我在Spring MVC应用程序中为ConstraintValidator
编写了一个自定义MultipartFile
,看起来像这样:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {MultipartFileNotEmptyValidator.class})
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER })
public @interface MultipartFileNotEmpty {
String message() default "{errors.MultipartFileNotEmpty.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
这是
validatedBy
部分:public class MultipartFileNotEmptyValidator implements ConstraintValidator<MultipartFileNotEmpty, MultipartFile>
{
@Override
public void initialize(MultipartFileNotEmpty annotation)
{
// Nothing here
}
@Override
public boolean isValid(MultipartFile file, ConstraintValidatorContext context)
{
return !file.isEmpty();
}
}
这一工作原理非常简单。我想做的是创建第二个代码来检查,并根据存储在数据库表中的值确保
MultipartFile
不会太大。我可以某种方式将适当的服务注入新的ConstraintValidator
类中以获得信息吗? 最佳答案
实际上,使用@Autowired
并没有什么特别的。从Spring documentation:
...一个ConstraintValidator实现可能有其依赖项
@Autowired像其他任何Spring bean一样。