Встречается на собеседованиях • сегодня

Почему разметку методов в контроллере можно ставить только над публичными методами

Разметка методов в контроллере (например, @GetMapping, @PostMapping) работает только над публичными методами, потому что фреймворк (Spring) обрабатывает их через механизм проксирования.

Причины:

  1. Проксирование — Spring создает прокси для контроллера, и если метод private или protected, прокси не сможет его вызвать.
  2. Рефлексия — Spring использует рефлексию для вызова методов, но даже через нее нельзя вызвать приватные методы без дополнительных прав.

Пример:

java
@RestController
public class MyController {
    @GetMapping("/public")  
    public String publicMethod() {  
        return "Works!";  
    }  

    @GetMapping("/private")  
    private String privateMethod() {  // Не сработает!  
        return "Fail!";  
    }  
}

Если попытаться вызвать /private, Spring проигнорирует его или выдаст ошибку.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы