2

웹 응용 프로그램은 Spring 2.5를 사용합니다. 이 모듈은 여러 개의 모듈로 구성되며 각 모듈은 자동으로 (하나의 응용 프로그램 컨텍스트에)로드되는 추가 스프링 컨텍스트 파일을 가져올 수 있습니다. 각 모듈이 추가 자원 번들 (I18N 지원)을 제공하도록하고 싶습니다.Spring 구성 파일에 여러 메시지 소스가 있습니다.

Spring은 구성 파일에 messageSource라는 이름으로 빈을 등록함으로써 국제화를 지원하지만, 이것은 변환 문자열이 포함 된 클래스 또는 특성 파일의 완전한 이름이 무엇인지 정확히 알고 있다고 가정합니다. 이것은 다른 모듈이 자신의 특성 파일을 다른 위치에 넣을 수 있기 때문에 문제가됩니다. 그래서 각 모듈이 자신의 리소스 번들로 자체 messageSource를 정의 할 수있는 방법을 찾고 있는데 어떻게해야할지 모르겠다.

아무도이 문제에 대한 해결책을 알고 있습니까?

감사합니다.

답변

0

일부 i18n 지원을 위해 Spring의 메시지 소스를 사용했습니다. 필자가 필요로하는 것은 필자가 필요로했던 하나의 메시지 소스를 필자가 만든 서비스 빈에 주입하는 것이었다.

나는 스프링 소스 자체에서 나중에 제안 할 내용을보고 싶어했다. 그러나 이기종 메시지 소스를 집계하는 것은 보이지 않습니다. 이들 모두가 등록 정보 파일과 같은 자원 번들의 일부가 될 경우 Bean이 등록 될 때 동적으로 갱신 될 수있는 ResourceBundleMessageSource에 대한 랩퍼를 작성할 수 있다고 확신합니다.

그러나 이기종 MessageSource를 집계하려는 경우 이것이 내가 제안하는 것입니다. 로드 할 때 ApplicationContext에 MessageSource.class 유형의 Bean을 요청하는 Bean을 모으는 메시지 소스를 작성하십시오. 그런 다음이 집계 bean은 각 소스가 키를 분석하고 메시지를 형식화하도록 시도 할 수 있습니다. 얼마나 많은 파일/msg 소스 클래스에 따라, 집계 구현이 어떤 클래스를 우선적으로 사용하려고 시도하는지 우선 순위화할 수 있도록 할 수 있습니다. 성능이 문제가되면 어 그리 게이터가 매번 추측 할 필요가 없도록 어떤 소스가 어떤 키를 해결했는지를 캐시 할 수 있습니다.