-
❗ 기획자가 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하였다면?
-> 단어를 다 찾아가면서 모두 변경해야 한다 => 해당 HTML 파일에 메시지가 하드코딩 되어 있기 때문
❓ 하드코딩
ex) <h2>상품 등록 폼<h2>
=> 상품 등록 폼과 같이 박혀 있는 코드를 말한다
💡 메시지
- 다양한 메시지를 한 곳에서 관리하도록 하는 기능
1. messages.properties 메시지 관리용 파일 작성한다
2. HTML에 key 값으로 해당 데이터를 불러 사용한다 => 타임리프 이용 #{ key }
💡 국제화
- 메시지 파일 (messages.properties)을 각 나라별로 별도로 관리하면 서비스를 국제화 할 수 있다
ex) messages_en.properties / messages_ko.properties
💡 스프링 메시지 소스 설정
- 스프링은 기본적인 메시지와 국제화 기능을 모두 제공한다
- 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource를 스프링 빈으로 등록한다
=> 직접 등록하는 방법/ 스프링 부트 이용
- 직접 등록
@Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages", "errors"); messageSource.setDefaultEncoding("utf-8"); return messageSource; }
📌 스프링 부트 이용
: 스프링 부트가 자동으로 MessageSource를 스프링 빈으로 등록한다
: MessageSource를 스프링 빈으로 등록하지 않고, 스프링 부트와 관련된 별도의 설정을 하지 않으면
messages라는 이름으로 기본 등록된다
스프링 부트 메시지 소스 기본 값
< application.properties >
spring.messages.basename=messages
💡 메시지 실제 적용
- messages.properties 작성하기
label.item=상품 label.item.id=상품 ID label.item.itemName=상품명 label.item.price=가격 label.item.quantity=수량 page.items=상품 목록 page.item=상품 상세 page.addItem=상품 등록 page.updateItem=상품 수정 button.save=저장 button.cancel=취소
- 타임리프 메시지 표현식 이용해 조회 #{ }
<h2>상품 등록</h2> <h2 th:text="#{page.addItem}">상품 등록</h2>
=> 둘다 <h2>상품 등록</h2>로 보여진다
💡 국제화 적용
- messages_en.properties 작성하기
label.item=Item label.item.id=Item ID label.item.itemName=Item Name label.item.price=price label.item.quantity=quantity page.items=Item List page.item=Item Detail page.addItem=Item Add page.updateItem=Item Update button.save=Save button.cancel=Cancel
- 이미 메시지 적용으로 #{ } 해뒀다
- 웹 브라우저의 언어 설정 값을 변경해 국제화 적용이 되었나 확인하자
'Spring' 카테고리의 다른 글
JSP (0) 2022.04.18 서블릿 Servlet (0) 2022.04.18 웹 시스템 구성, 서블릿, 멀티 쓰레드 (0) 2022.04.13 빈 스코프 (0) 2022.04.13 빈 생명주기 콜백 (0) 2022.04.12