[Spring] MessageSource


MessageSource

โ€œ์ด๋ฉ”์ผโ€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์˜ ํผ์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž์—ด์ด ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

๋ฌธ์ž์—ด์„ โ€œemailโ€๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ๋ชจ๋“  ํผ์—์„œ ๋™์ผํ•˜๊ฒŒ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ๋‹ค.

์ด๋Ÿฐ ์ƒํ™ฉ์„ ํšจ์œจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด MessageSource๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

step 1. properties ํŒŒ์ผ ์ƒ์„ฑ

src/main/resources์— message ํด๋”๋ฅผ ๋งŒ๋“  ํ›„ label.properties๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ์„ฑํ•œ๋‹ค.

member.register=ํšŒ์›๊ฐ€์ž…
next.btn=๋‹ค์Œ๋‹จ๊ณ„
member.info=ํšŒ์›์ •๋ณด
email=์ด๋ฉ”์ผ
name=์ด๋ฆ„
password=๋น„๋ฐ€๋ฒˆํ˜ธ
password.confirm=๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ
register.btn=๊ฐ€์ž… ์™„๋ฃŒ
register.done=<strong>{0} {1}๋‹˜</strong> ํšŒ์› ๊ฐ€์ž…์„ ์ถ•ํ•˜ํ•ฉ๋‹ˆ๋‹ค.
  • key=value ํ˜•์‹์œผ๋กœ ์ž…๋ ฅํ•œ๋‹ค.
  • register.done
    • MessageSource์˜ getMessage()๊ฐ€ ์ž๋™์œผ๋กœ ์ ์šฉ๋œ๋‹ค.
    • {0}์€ ์ „๋‹ฌ๋ฐ›์€ argument์˜ ์ฒซ ๋ฒˆ์งธ(0) ์š”์†Œ๋ฅผ ๋ฐ”์ธ๋”ฉํ•  ์ž๋ฆฌ์ด๋‹ค.

step 2. messageSource bean ๊ฐ์ฒด ์ƒ์„ฑ

๊ธฐ์ „์— mvc ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ xmlํŒŒ์ผ์— ์•„๋ž˜์˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

<bean id="messageSource"
    class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>message.label</value>
        </list>
    </property>
    <property name="defaultEncoding" value="UTF-8" />
</bean>
  • bean์˜ id๋Š” ๋ฌด์กฐ๊ฑด messageSource๋กœ ํ•ด์•ผํ•œ๋‹ค.
  • list์˜ value๋ฅผ ํ†ตํ•ด properties์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•œ๋‹ค.
    • message.label = message/label.properties
  • ์—ฌ๋Ÿฌ ์„ค์ •ํŒŒ์ผ์„ ๋“ฑ๋กํ•  ๊ฒฝ์šฐ <value> ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

step 3. ์ ์šฉํ•˜๊ธฐ

<!-- ์ƒ๋‹จ์— ์ถ”๊ฐ€ -->
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

...

<spring:message code="register.done" arguments="${formData.name }" />
  • MessageSource๋ฅผ ์‚ฌ์šฉํ•  ๋ถ€๋ถ„์— <spring:message> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • code : MessageSource์— ์ž…๋ ฅํ•œ key๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
  • arguments : messageSource์— ์ „๋‹ฌํ•  arguments๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
    • ํ•˜๋‚˜๋งŒ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ -> arguments="hi"
    • ์—ฌ๋Ÿฌ๊ฐœ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ -> arguments="hi, bye, seeyou"





ยฉ 2022. by Yejin Ha

Powered by JihyunRyu