Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @NotNull未始终使用MethodValidationPostProcessor运行_Java_Spring - Fatal编程技术网

Java @NotNull未始终使用MethodValidationPostProcessor运行

Java @NotNull未始终使用MethodValidationPostProcessor运行,java,spring,Java,Spring,我尝试将javax.validation.constraints.NotNull与org.springframework.validation.beanvalidation.MethodValidationPostProcessor.MethodValidationPostProcessor一起使用,但没有在同一个类中按预期运行。拜托,你能告诉我为什么吗 MethodValidationConfig类: @Configuration @ComponentScan({ "com.mypackage

我尝试将javax.validation.constraints.NotNull与org.springframework.validation.beanvalidation.MethodValidationPostProcessor.MethodValidationPostProcessor一起使用,但没有在同一个类中按预期运行。拜托,你能告诉我为什么吗

MethodValidationConfig类:

@Configuration
@ComponentScan({ "com.mypackage" })
public class MethodValidationConfig {

    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor() {
        return new MethodValidationPostProcessor();
    }

}
ValidationUtils类:

@Component
@Validated
@Slf4j
public class ValidationUtils {
    public void test1(@NotNull String[] test) {
        if(test == null) {
            log.error("Test is null!!!");
        }
    }

    public void test2() {
        test1(null);
    }

}
测试应用程序类:

@EnableAsync
@EnableTransactionManagement
@SpringBootApplication
@Slf4j
public class TestApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(TestApplication.class, args);

        ValidationUtils validationUtils = context.getBean(ValidationUtils.class);

        try {
            validationUtils.test1(null);
        } catch (Exception e) {
            log.info("OK");
        }

        try {
            validationUtils.test2();
        } catch (Exception e) {
            log.info("OK");
        }

    }

}
com.mypackage.TestApplication:确定
com.mypackage.validationUtils:测试为空

我假设会发生以下情况:当您调用test1()时,代理会截取并执行验证。当您调用test2()时,它只是将调用委托给真实对象,其中不涉及代理。类似的问题:

我假设会发生以下情况:当您调用test1()时,代理会拦截并执行验证。当您调用test2()时,它只是将调用委托给真实对象,其中不涉及代理。类似的问题:

公共无效测试1(@Valid@NotNull String[]test){…}
?和
公共无效测试1(@Valid@NotNull String[]test){…}