728x90
반응형
MessageSourceAware
MessageSourceAware는 번들이 지정된 properties 파일을 setMessageSource()로 전달한다.
-> 메세지 국제화를 위해 사용ResourceBundleMessageSource의 setBaseName()을 통해 전달받은 파일을
setMessageSource()를 자동으로 호출해서 매핑하는 역할을 한다.ResourceBundleMessageSource와 MessageSourceAware는 쌍으로 사용한다.
▶︎ MemberInfo.java
properties파일(속성값으로 받은 파일을 열어서, 'k=v'형태를 읽어서 파싱하여 사용)
private MessageSource message; // 선언
package com.test02;
import java.util.Locale;
import org.springframework.context.MessageSource;
import org.springframework.context.MessageSourceAware;
public class MemberInfo implements MessageSourceAware {
// properties파일(속성값으로 받은 파일을 열어서, 'k=v'형태를 읽어서 파싱하여 사용)
private MessageSource message;
@Override
public void setMessageSource(MessageSource messageSource) {
System.out.println("컨테이너가 메세지 설정을 수행중...");
this.message = messageSource;
}
public void display(Locale locale) {
String name = message.getMessage("member.name", null, locale);
String birthplace = message.getMessage("member.birthplace", null, locale);
String hobby = message.getMessage("member.hobby", null, locale);
String age = message.getMessage("member.age", new Object[] {"15"}, locale);
System.out.println(locale);
System.out.println(name);
System.out.println(birthplace);
System.out.println(hobby);
System.out.println(age);
}
}
▶︎testmessage_en.properties : 영어파일
member.name=java
member.birthplace=usa
member.hobby=basketball,game
member.age={0}:teenager
title=[Member Information]
▶︎testmessage_ko.properties : 한글파일
한글로 쓰면 자동으로 아래와같이 코딩 된다.
member.name=\uC790\uBC14
member.birthplace=\uD55C\uAD6D
member.hobby=\uB18D\uAD6C,\uAC8C\uC784
member.age={0}\uCCAD\uC18C\uB144
title=[\uD68C\uC6D0\uC815\uBCF4]
▶︎ applicationContext.xml
'com/test02/testmessage까지만 적어줘도 properties파일명의 testmessage를 인식하여 파일안의 값을 set 한다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="com/test02/testmessage"/>
</bean>
<bean id="member" class="com.test02.MemberInfo"/>
</beans>
728x90
반응형
'Web > Spring' 카테고리의 다른 글
[Spring]AOP_관점지향 프로그래밍 (0) | 2020.10.27 |
---|---|
[Spring]Autowire (0) | 2020.10.23 |
[Spring]constructor injection_setter injection (0) | 2020.10.23 |
[Spring]Maven (0) | 2020.10.22 |
[Spring]DI/IoC (0) | 2020.10.19 |