728x90
![](https://blog.kakaocdn.net/dn/xcCMz/btrm56er4l0/V7pxOEUcMaA0ShARI7Mra1/img.png)
MessageSourceAware는 번들이 지정된 properties 파일을 setMessageSource()로 전달한다. -> 메세지 국제화를 위해 사용
ResourceBundleMessageSource 의 setBaseName()을 통해 전달받은 파일을, setMessageSource()를 자동으로 호출하여 매핑하는 역할을 한다.
ResourceBundleMessageSource와 MessageSourceAware는 쌍으로 사용한다.
![](https://blog.kakaocdn.net/dn/dgdjc0/btrndoFkKna/ney8UMH0lUCe8nhL8u3Q41/img.png)
testmessage_en.properties
member.name=java
member.birthplace=usa
member.hobby=basketball,game
member.age={0}:teenagers
title=[member Information]
testmessage_ko.properties
member.name=\uC790\uBC14
member.birthplace=\uB300\uD55C\uBBFC\uAD6D
member.hobby=\uB18D\uAD6C,\uAC8C\uC784
member.age={0}:\uCCAD\uC18C\uB144
title=[\uD68C\uC6D0 \uC815\uBCF4]
MemberInfo.java
package com.test03;
import java.util.Locale;
import org.springframework.context.MessageSource;
import org.springframework.context.MessageSourceAware;
public class MemberInfo implements MessageSourceAware{
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[] {"13"}, locale);
System.out.println(locale);
System.out.println(name);
System.out.println(birthplace);
System.out.println(hobby);
System.out.println(age);
}
}
applicationContext.xml
<?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/test03/testmessage" />
</bean>
<bean id="member" class="com.test03.MemberInfo" />
</beans>
MTest.java
package com.test03;
import java.util.Locale;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MTest {
public static void main(String[] args) {
ApplicationContext factory = new ClassPathXmlApplicationContext("com/test03/applicationContext.xml");
MemberInfo member = (MemberInfo) factory.getBean("member");
int num = (int)(Math.random()*2);
if(num == 0) {
String msg = factory.getMessage("title", null, "기본 메세지", Locale.getDefault());
System.out.println(msg);
member.display(Locale.getDefault());
} else {
String msg = factory.getMessage("title", null, "default message", Locale.ENGLISH);
System.out.println(msg);
member.display(Locale.ENGLISH);
}
}
}
실행결과
![](https://blog.kakaocdn.net/dn/7M9r1/btrnhCbwgc0/5PuZhpsoHeuvKOrKwaRTl1/img.png)
![](https://blog.kakaocdn.net/dn/b0fnSO/btrm9EoAUNK/xTBO6fmqkB6AgLN4gTewK0/img.png)
위의 코드에서는 언어를 두가지로 밖에 설정을 안해 놓았지만 언어 설정에서 많이 사용되는 코드인듯합니다!
랜덤으로 설정했기에 실행할때마다 결과가 바뀌지만 랜덤이 아니라 다른 설정을 통해 선택을 통한 언어 설정도 가능합니다!
728x90
'Java 관련 > Spring Legecy' 카테고리의 다른 글
[Spring] Annotation(@Autowired, @Qualifier) (0) | 2022.03.22 |
---|---|
[Spring] Spring Annotation(스프링 어노테이션) (0) | 2022.03.21 |
[Spring] DI / IoC (Bean 객체_10) - autowire (0) | 2022.03.19 |
[Spring] DI / IoC (Bean 객체_09) - 호출 (0) | 2022.03.18 |
[Spring] DI / IoC (Bean 객체 생성_08) - <bean>태그 속성 (0) | 2022.03.17 |