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

tjeong님의 프로필 이미지
tjeong

작성한 질문수

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

message 콘솔에 출력하기

작성

·

225

1

안녕하세요. message 내용을 공부하다가 질문이 생겨서 질문 드립니다.

SpringBoot 환경에서 test가 아니라 main에서 직접 메시지 문을 콘솔에 출력해보려고 했습니다.

그런데 출력이 되지 않고 Exception in thread "main" java.lang.NullPointerException 메시지나 출력됩니다.

왜 출력되지 않는지 궁금합니다.

아래와 같이 진행했습니다.

(1) application.properties를 다음과 같이 설정하고 (강의와 동일하게)

spring.messages.basename=messages,config.i18n.messages

(2) messages.properties도 강의와 동일하게 설정했지만, 이번 케이스는 코드 하나만 있어도 충분합니다.

hello=안녕

(3) 아래와 같이 MessageProducer 클래스를 하나 만들고, 

@Component
public class MessageProducer {

@Autowired
private MessageSource ms;

public String getHelloMessage() {
return ms.getMessage("hello", null, null);
}
}

이 클래스를 만들면 잘 작동하던 테스트 코드들도 BeanDefinitionStoreException 를 내뱉으며 먹통이 됩니다..

(4) main 문에서 출력하도록 하였습니다. 

@SpringBootApplication
public class ItemServiceApplication {

public static void main(String[] args) {
SpringApplication.run(ItemServiceApplication.class, args);

MessageProducer mp = new MessageProducer();
System.out.println(mp.getHelloMessage());

}
}

같은 방식으로 컨트롤러에서 호출, 출력하게 만들었으나 역시 NullPointerException이 나왔습니다.

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. tjeong님

다음 부분이 문제입니다.

MessageProducer mp = new MessageProducer();

이렇게 객체를 직접 생성하게 되면 스프링 컨테이너의 도움을 받지 못합니다. 따라서 의존관계 주입도 되지 않습니다.

MessageProducer를 스프링 빈에 등록하고 스프링 컨테이너에서 꺼내서 사용해주세요.

감사합니다.

tjeong님의 프로필 이미지
tjeong

작성한 질문수

질문하기