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





