Как проверить параметры методов, вызывающих из одного класса? - PullRequest
1 голос
/ 07 апреля 2020

Проверка работает, как и ожидалось, для вызова метода класса бина из родительского элемента "@Autowired". Но как проверить внутренний метод, если он вызывается из самого класса?

@Bean
@Validated
public class TestBean {

    public void testMethod(@NotNull String param1) {
        System.out.println("here at TestBean.test");
        this.innerMethod(null);
    }

    private void innerMethod(@NotNull String param1) {
        System.out.println("here at TestBean.innerMethod");
    }
}
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class TestBeanTest {

    @Autowired
    private TestBean bean;

    @Test
    public void testMethod() {
        bean.testMethod(null); // -> error as expected
        bean.testMethod("example"); // -> there are no ConstraintValidation error in "inner method", how to validate "innerMethod"?
    }
}

1 Ответ

0 голосов
/ 07 апреля 2020

Spring не проверяет данные, когда параметры передаются из метода, который вызывается из другого метода.

Лучший подход - поставить условие для проверки данных перед их отправкой.

Обновленный код будет:

@Bean
@Validated
public class TestBean {

    @Autowired
    private Service Service;

    public void testMethod(@NotNull String param1) {
        System.out.println("here at TestBean.test");
        // let's say some call.
        String arbitrary = service.getSomeStringData(param1);
        // validate it before sending it.
        if(arbitrary != null) {
           this.innerMethod(arbitrary);
        }        
    }

    private void innerMethod(String param1) {
        System.out.println("here at TestBean.innerMethod");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...