Java 将SpringBean注入基于注释的Bean验证器

Java 将SpringBean注入基于注释的Bean验证器,java,spring,spring-mvc,bean-validation,Java,Spring,Spring Mvc,Bean Validation,我为Spring MVC应用程序中的多部分文件编写了一个自定义ConstraintValidator,如下所示: @Documented @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = {MultipartFileNotEmptyValidator.class}) @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, E

我为Spring MVC应用程序中的
多部分文件
编写了一个自定义
ConstraintValidator
,如下所示:

@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 {};
}
这一个工作,是难以置信的简单。我想做的是创建第二个,根据存储在数据库表中的值检查并确保
MultipartFile
不是太大。我是否可以以某种方式将适当的服务注入新的
ConstraintValidator
类以获取信息

@Component
public class MultipartFileNotEmptyValidator

然后可以使用
@Autowired
并注入依赖项。对我来说,它就像一个魔咒。

使用
@Autowired
实际上没有什么特别的需要。从:

…ConstraintValidator实现可能有其依赖项 @像其他春豆一样自动连线


使其
@可配置
。使用setter将其依赖项注入控制器中。没有必要自动连接所有依赖项。我认为它可以工作。你试过了吗?如果参数不变,我希望在应用程序开始时从数据库中加载该参数,并将其存储在ServletContext中。除非构造函数注入是不可能的。经典的春天。@BenGeorge不再是真的了。我可以确认构造函数注入工作正常,使用SpringBoot 1.5.3,Spring版本是4.3.8
@Component
public class MultipartFileNotEmptyValidator