inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 프레임워크 핵심 기술

IoC 컨테이너 5부: 빈의 스코프

MessageSource 구현체

해결된 질문

358

hp

작성한 질문수 31

0

안녕하세요.

MessageSource 구현체를 강의에서 사용한 ReloadableResourceBundleMessageSource가 아닌 ResourceBundleMessageSource를 사용하면 왜 NoSuchMessageException이 날까요?

@Bean
public MessageSource messageSource() {
var messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:/messages");

return messageSource;
}

강의에서 처럼 이렇게 빈을 등록해주면 정상적으로 메시지가 출력되는데

var messageSource = new ResourceBundleMessageSource();

이렇게 구현체를 바꾸기만 하면 NoSuchMessageException이 나네요

왜 프로퍼티에서 메시지를 못읽는건지 궁금합니다

감사합니다.

-----------------------------------------

이것저것 해보다가 해결 방법은 찾았습니다.

@Bean
public MessageSource messageSource() {
var messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames("messages");

return messageSource;
}

setBasenames()에 저렇게 넘겨주면 메시지가 정상적으로 출력이 되더라구요

왜 ReloadableResourceBundleMessageSource를 사용할때와 달리 classpath:/를 붙이면 안되는건가요?

spring java

답변 1

1

백기선

좋은 질문이네요. 아마도 관련 클래스들 JavaDoc을 읽어보셨다면 이해하셨을텐데요. 질문하신 내용이 맞습니다.

setBasename은 구현체에 따라 다르게 동작한다고 나와있고 Reloadable구현체는 classpath:/와 같은 프리픽스를 지원하지만 다른건 지원하지 않습니다.

The resource location format is up to the specific {@code MessageSource} implementation.
> AbstractResourceBasedMessageSource.java

Note that the basenames set as {@link #setBasenames "basenames"} property are treated in a slightly different fashion than the "basenames" property of {@link ResourceBundleMessageSource}. It follows the basic ResourceBundle rule of not specifying file extension or language codes, but can refer to any Spring resource location (instead of being restricted to classpath resources).
> ReloadableResourceBundleMessageSource.java


BeanFactory와 ApplicationContext 중 사용하고 싶은 컨테이너를 설정 할 수 있나요?

0

381

1

프로젝트 생성에 관련한 질문

0

376

1

안녕하세요 강의 내용을 듣다가 궁금점이 생겨 글을 남기게 되었습니다.

0

371

1

HttpServeltRequest 객체의 빈 스코프에 대해 질문 드립니다.

0

304

0

PropertyEditor non thread-safe 한 이유

0

491

1

빈의 초기화 시점이 궁금합니다.

0

393

1

이 강의 예제소스 없나요?

0

345

1

릴로딩 기능에 대해

0

404

1

Bean 을 특정 Application...Event 발생 후, 등록하는 방법이 궁금합니다

0

612

3

IoC/DI와 POJO의 관계

1

749

2

기선님 RetentionPolicy에 대해서 질문이 있습니다.

0

291

1

안녕하세요 기선님!

3

486

3

비동기적으로 실행할때

0

314

2

"Prototype/프록시"로 설정했는데 동일한 객체로 나옵니다

0

530

4

@Autowired 로 가져오는 Bean은 ?

2

280

1

Type-Safety 의미

0

538

1

Null Point

0

318

1

WebDataBinder를 특별히 쓰는 이유가 있나요?

0

384

1

안녕하세요?

0

336

2

애노테이션이 없습니다(?)

0

279

3

코드 중 변수 앞에 적는 것이 무엇인지 알고 싶습니다.

0

295

2

강의 하시면서 사용하는 resolving 이란 단어는 어떤 의미인가요?

1

1499

1

IOC컨테이너관련 질문입니다

0

245

3

인터페이스가 있는 경우 인터페이스 타입으로 주입하는 추가 질문입니다.

0

259

1