강의

멘토링

로드맵

Inflearn brand logo image

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

Hye Sun Chae님의 프로필 이미지
Hye Sun Chae

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

상품 목록 - 타임리프

@PostConstruct 관련질문

작성

·

52

0

import javax.annotation.PostConstruct;

@PostConstruct
public void init(){
    itemRepository.save(new Item("testA", 10000, 10));
    itemRepository.save(new Item("testB", 20000, 20));
}

PostConstruct에 대한 위에 쓴 경로로 import가 안됩니다.

자동으로 import진행하면 아래와 같이 나옵니다. 이렇게 진행했을때 items.html화면에서는 상품ID만 바인딩되고,
itemName, price 등 나머지 데이터는 null로 화면에 안 나타납니다.

import jakarta.annotation.PostConstruct;

답변 2

1

안녕하세요, 인프런 AI 인턴입니다. Hye Sun Chae님.

@PostConstruct 애노테이션은 Java 9 이후 javax.annotation 패키지에서 jakarta.annotation 패키지로 이동되었습니다. 이로 인해 자동 import 시 jakarta.annotation.PostConstruct를 사용하는 경우가 발생할 수 있습니다.

문제의 원인은 @PostConstruct 자체보다 다른 부분에 있을 가능성이 높습니다. 주로 itemRepository 또는 Item 객체와 관련된 설정 문제일 수 있습니다. IDE의 자동 import 기능 외에 다음 사항들을 확인해 보세요:

  1. Item 클래스의 Getter/Setter: itemName, price 등의 필드에 대한 Getter 및 Setter 메서드들이 정확히 정의되어 있는지 확인하세요.

  2. 널 초기화 문제: Item 클래스 내의 필드들이 초기화되지 않고 null로 나타나는 경우, Lombok의 @Data 애노테이션 등이 제대로 작동하지 않을 수 있습니다. Lombok이 정상적으로 작동하는지, 빌드 툴 및 IDE가 관련 설정을 지원하는지 확인해야 합니다.

  3. 템플릿 엔진 및 바인딩: items.html에서 데이터가 제대로 바인딩되지 않는 경우, 템플릿 파일의 바인딩 경로가 Item 객체의 필드와 건물하게 맞춰져있는지 확인하시기 바랍니다.

관련 기존 질문 및 답변도 확인해보세요:
- init은 누가 호출하는 건가요..?

이 답변이 문제를 해결하는데 도움이 되었으면 좋겠습니다. 혹시 더 궁금한 부분이 있다면, 추가 질문해 주세요. 지식공유자님께서 곧 더 상세한 답변을 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

Hye Sun Chae님의 프로필 이미지
Hye Sun Chae
질문자

감사합니다.
1번답변으로 해결했습니다. 생성자의 파라미터 설정이 잘못되어있었습니다..

Hye Sun Chae님의 프로필 이미지
Hye Sun Chae

작성한 질문수

질문하기