Встречается на собеседованиях • сегодня
Почему разметку методов в контроллере можно ставить только над публичными методами
Разметка методов в контроллере (например, @GetMapping, @PostMapping) работает только над публичными методами, потому что фреймворк (Spring) обрабатывает их через механизм проксирования.
Причины:
- Проксирование — Spring создает прокси для контроллера, и если метод
privateилиprotected, прокси не сможет его вызвать. - Рефлексия — Spring использует рефлексию для вызова методов, но даже через нее нельзя вызвать приватные методы без дополнительных прав.
Пример:
java
@RestController
public class MyController {
@GetMapping("/public")
public String publicMethod() {
return "Works!";
}
@GetMapping("/private")
private String privateMethod() { // Не сработает!
return "Fail!";
}
}Если попытаться вызвать /private, Spring проигнорирует его или выдаст ошибку.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы