인프런 커뮤니티 질문&답변
빈 접근
해결된 질문
작성
·
215
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
스프링 빈의 이름을 따로 지정 안하는 경우에 basicController.HelloBean이 나온 것을 확인하였습니다. 하지만 타임리프에 th:text="${@basicController.HelloBean.hello('Spring!')}"라고 작성하여도 빈을 찾지 못하는 오류가 발생했습니다. 이러한 경우에는 무조건 빈의 이름을 바꿔야 하는걸까요?
답변 1
0
안녕하세요. 이승훈님, 공식 서포터즈 David입니다.
.
내부클래스의 이름은 "외부클래스명.내부클래스명"으로 지정됩니다.
따라서 내부클래스를 빈으로 등록하게 되면 "basicController.HelloBean"이라고 나오는 것이고요.
타임리프에서 빈을 가져올 때는 빈의 이름을 기준으로 가져옵니다.
그런데 타임리프 내부적으로 빈의 이름을 가져올 때 .(점)이 들어가게 되면 .(점) 이하를 클래스 내 속성 또는 필드로 인식합니다. 그러므로 내부클래스의 기본 이름 포맷("외부클래스명.내부클래스명")으로는 빈을 가져올 수 없습니다.
따라서 타임리프에서 사용할 계획이 있는 내부클래스라면 빈의 이름을 별도로 명시하여 .(점)이 없는 빈 이름으로 만들어주셔야 합니다.
.
감사합니다.





