Java SpringBoot:@Validated和@PreDestroy创建名为';默认验证器';

Java SpringBoot:@Validated和@PreDestroy创建名为';默认验证器';,java,spring,spring-boot,spring-validator,Java,Spring,Spring Boot,Spring Validator,我有一个Spring服务,它使用@PreDestroy方法调用另一个服务 @Service public class DestroyMe { public final ValidService service; private SomeDto dto; @PreDestroy public void destroy() { service.stop(dto); } } ValidService是一个带有@Validated类级注释的接口 @Validat

我有一个Spring服务,它使用
@PreDestroy
方法调用另一个服务

@Service
public class DestroyMe {
  public final ValidService service;
  private SomeDto dto;
  @PreDestroy
    public void destroy() {
        service.stop(dto);
  }
}
ValidService
是一个带有
@Validated
类级注释的接口

@Validated
public interface ValidService {
  public void stop(@Valid SomeDto dto);
}
还有这个接口的实现类(带有
@Service
注释)

验证在运行时正常工作,但当SprinBoot应用程序终止时,它调用调用
destroy
方法,该方法调用
service.stop(dto)
,我得到以下错误:

创建名为“defaultValidator”的bean时出错:当此工厂的单例正在销毁时,不允许创建单例bean(不要在销毁方法实现中从BeanFactory请求bean!)

单击IDE中的
defaultValidator
将我带入
ValidationAutoConfiguration
类的
公共静态LocalValidatoryFactoryBean defaultValidator()

如果我从
ValidatedService
中删除
@Validated
注释,所有操作都正常,但没有服务的输入验证。 看起来Spring正在尝试创建一个特别的验证器bean来验证
stop
方法的输入,但是在销毁阶段不可能这样做

如何解决这个问题

编辑1 以下是重现此行为的代码: