강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

이승훈님의 프로필 이미지
이승훈

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

변수 - SpringEL

빈 접근

해결된 질문

작성

·

215

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
스프링 빈의 이름을 따로 지정 안하는 경우에 basicController.HelloBean이 나온 것을 확인하였습니다. 하지만 타임리프에 th:text="${@basicController.HelloBean.hello('Spring!')}"라고 작성하여도 빈을 찾지 못하는 오류가 발생했습니다. 이러한 경우에는 무조건 빈의 이름을 바꿔야 하는걸까요?

답변 1

0

안녕하세요. 이승훈님, 공식 서포터즈 David입니다.

.
내부클래스의 이름은 "외부클래스명.내부클래스명"으로 지정됩니다.

따라서 내부클래스를 빈으로 등록하게 되면 "basicController.HelloBean"이라고 나오는 것이고요.

타임리프에서 빈을 가져올 때는 빈의 이름을 기준으로 가져옵니다.

그런데 타임리프 내부적으로 빈의 이름을 가져올 때 .(점)이 들어가게 되면 .(점) 이하를 클래스 내 속성 또는 필드로 인식합니다. 그러므로 내부클래스의 기본 이름 포맷("외부클래스명.내부클래스명")으로는 빈을 가져올 수 없습니다.

따라서 타임리프에서 사용할 계획이 있는 내부클래스라면 빈의 이름을 별도로 명시하여 .(점)이 없는 빈 이름으로 만들어주셔야 합니다.
.
감사합니다.

이승훈님의 프로필 이미지
이승훈

작성한 질문수

질문하기