Я создал приложение весенней загрузки (пользователь spring-boot-starter-parent V. 2.2.2.RELEASE) с контроллерами Rest, которые отлично работают, теперь я добавил зависимость:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
И добавил @Validated в мой класс контроллера, чтобы все методы в нем были проверены:
@RestController
@Validated
public class UserController {
@Autowired
private UserService userService;
@PostConstruct
public void init() {
System.out.println("test");
}
}
Теперь методы контроллера при вызове начинают генерировать исключения NullPointerException, потому что userService имеет значение null; Я сделал @PostConstruct в качестве теста. По-видимому, он вызывается для обычного нерасширенного bean-компонента, в котором поля автоматически подключены правильно. Но при вызове контроллера через HTTP этот нерасширенный bean-компонент не вызывается, а является bean-компонентом класса UserController$$EnhancerBySpringCGLIB$$ и имеет неавтоматически связанный userController. Я действительно не знаю, почему это должно быть очень просто, насколько я знаю, не так много настроек. Поэтому я предполагаю, что по какой-то причине Spring не вводит зависимости в расширенные классы CGLIB или просто вводит их в неправильный класс. Когда я удаляю @Validated, все снова работает нормально, но проверки, конечно же, нет.