해결된 질문
작성
·
187
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
이렇게 RequestMapping으로 /template으로 시작하는 url을 mapping하고, /fragment로 오는 get을 template()에서 처리합니다. 그런데 이런 컨트롤러 클래스 내부의 메소드를 public으로 하는 이유가 있을까요? 예외없이 private으로 해야하는 것 아닌가요? 다른곳에서 TemplateController 인스턴스를 만들어서 template() 함수를 쓰려고 해도, templateController가 @Controller니까 의미 없지 않나요? 즉,spring 차원에서 public을 막고 private으로만 메소드를 만들게 할 수 도 있는데, 그렇게 않한 이유가 알고 싶습니다.
답변 1
1
안녕하세요. 문상준님
저도 정확한 이유는 잘 모르겠습니다.
제 생각에는 해당 메서드는 결과적으로 외부에서 호출되기 때문에 public으로 만드는 것이 맞다고 생각합니다.
디스패처 서블릿이 호출하든, 아니면 다른 곳에서 호출하든 결국 다른 패키지에 있는 어디선가 이 메서드를 호출해야 하니까요. 그러면 자바 관례상 public으로 선언하는 것이 좋다 생각합니다. 그리고 외부에서 호출하는 컨트롤러의 메서드이니 외부에서 호출 가능한 public으로 선언하는 것이 일관성이 있다 생각합니다.
관련해서 자세한 이유를 아시는 분이 있으면 추가로 답변 부탁드려요.
감사합니다.