안녕하세요 빈코입니다! 오늘은 저번 포스팅(Spring Message 적용법)에 이어서 사용하는 방법에 대해 포스팅하려 합니다. 프로젝트를 만들다 보면 크게 Front, Back으로 나뉘는데 저희가 이전에 적용한 Spring Message도 각각의 파일마다 사용하는 방법이 다릅니다. 파일은 js(javascript), html(jsp), java(controller, service)로 나뉩니다. 바로 사용하는 방법을 확인해 볼게요😁
Java 단 사용법(Controller, Service)📙
Java단에서 사용하는 방법은 지난 포스팅에 맞게 잘 따라오셨다면 생각보다 간단합니다. 지난 포스팅에서 Spring Message라는 Bean을 ApplicationContext.xml에 등록해 줬었는데요! 여기서 Java단에서 접근하기 위한 MessageUtil이라는 Bean도 같이 생성해 줬었습니다.
Bean으로 등록했기 때문에, 사용하고 싶은 Controller나 Service 단에서 주입받아 사용하면 되겠죠?
💡 로그를 남기거나, try catch문으로 감싼 로직이 오류가 나서 메시지를 전송해야 하는 상황 등 모든 Business 로직은 대부분 Service단에서 진행합니다. Controller는 Service를 매핑해 주는 역할만 하는 것이 좋습니다😊
@Autowired
private MessageUtil messageUtil;
위 코드를 원하는 Service단의 상단에 넣어서 Bean으로 등록한 MessageUtil 클래스를 주입받아 주세요! 이후에는 자기가 현재 위치한 지역에 맞는 message.properties를 찾아서 Key 값을 통해 원하는 Value를 얻을 수 있습니다.
간단한 예시로 저는 현재 한국에 있기 때문에 messages_ko.properties에 있는 key-value 형식의 사용자 정의 메시지들에 접근하게 됩니다.
그럼 제가 Service단에서 주입받은 MessageUtil의 getMessage() 함수를 사용하면 원하는 value 값을 얻을 수 있겠죠? 아래처럼요!
StringBuilder sb = new StringBuilder();
sb.append(messageUtil.getMessage("login.id"));
sb.append(" : ").append("Binco");
sb.append("\n");
sb.append(messageUtil.getMessage("login.password));
sb.append(" : ").append("1234");
// 출력
아이디 : Binco
비밀번호 : 1234
HTML 사용법(JSP)📘
다음은 jsp에서 사용하는 방법을 알아보겠습니다. Spring에서는 jsp에서 국제화 메시지를 사용할 수 있게 라이브러리를 제공하고 있습니다. 바로 Spring's JSP 태그 라이브러리인데요! 해당 라이브러리는 <spring:xxx>와 같이 spring이라는 접두어로 사용할 수 있습니다. 태그 라이브러리이기 때문에, 사용하려는 jsp 상단에 아래 코드와 같이 taglib 지시문을 작성해야 합니다.
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<spring:message code="login.id" />
jsp에서 사용하는 방법도 간단하죠?
JS 사용법(JavaScript)📒
프로그램을 개발하다 보면 js에서 데이터를 가져와 html 태그들을 이용하여 원하는 형식으로 만들어 붙이거나, 특정 공간의 이름을 바꾸거나 등 js에서도 텍스트 관련 코드를 사용해야 하는 경우가 왕왕 있습니다. js에서는 다국어 지원을 간단히 사용할 수 있는 자바스크립트 모듈 'i18n'을 지원해 줍니다.
💡 i18n은 국제라는 영단어 'internationalization'에서 첫 글자 i와 마지막 글자 n 사이에 18개의 글자가 들어 있다는 뜻입니다.
아래 코드를 살펴보면 필요한 js 파일들을 임포트 하고, 이후에 i18n 플러그인을 초기화하고 설정하고 있습니다.
<!-- jQuery 3.4.1 -->
<script src="resources/jquery/jquery-3.4.1.min.js"></script>
<!-- i18n.properties -->
<script src="resources/jquery/jquery.i18n.properties.js"></script>
<script>
$.i18n.properties({
name : 'messages',
path : 'messages/',
mode : 'map',
language : 'ko'
});
</script>
console.log($.i18n.prop('login.id'));
// 결과 : 아이디
'name' 속성은 사용할 properties 파일의 이름을 지정하고, 'path' 속성은 properties 파일이 위치한 경로를 지정합니다. 위 코드의 경우 'messages/' 폴더에 properties 파일이 있어야 하겠죠?
'mode' 속성은 i18n 플러그인이 텍스트를 가져오는 방식을 의미하는데, 'map' 모드는 key-value 쌍을 지정한 객체에 매핑하는 역할을 합니다. 마지막으로 'language' 속성은 사용할 언어를 지정합니다.
이후에 콘솔에 예시를 들었듯이, $.i18n.prop('key name') 형식으로 message.properties에 있는 값들을 꺼내서 사용합니다😁
마치며
지금까지 Spring Message를 여러 파일에서 사용하는 방법을 알아보았습니다. 대부분 사내 프로젝트에는 이미 적용이 되어 있을 수 있을 텐데, 한 번쯤은 내부적으로 어떻게 동작하는지 알아봐도 좋을 것 같습니다😃
👨👩👦👦 오픈채팅방 운영
취업을 준비하는 예비 개발자분들을 위한 질문&답변할 수 있는 공간을 만들었습니다. 취업과 이직을 하기 위해서 어떤 걸 중점적으로 준비해야 하는지부터 포트폴리오&이력서 작성법 등 다양한 질문들을 받고 답변을 드립니다. 참여하셔서 다양한 정보 얻고 가시면 좋을 것 같네요😁
참여코드 : 456456
https://open.kakao.com/o/gVHZP8dg
👨💻 전자책 출간
아울러 제가 🌟비전공자에서 2년 만에 보안 전문 중견기업으로 이직 한 방법들을 정리한 전자책을 출간하게 되었습니다. 어떤 걸 공부해야 하는지, 이직을 위해서 무엇을 준비해야 하는지, 제가 받았던 기술 면접 리스트 등 다양한 목차로 구성되어 있습니다. 또한, 구매 시 1:1 채팅을 이용하여 포트폴리오 첨삭을 도와드리고 있습니다. 🐕전자책으로 얻은 모든 수익은 유기견 센터 '팅*벨 입양센터'에 후원될 예정입니다. 관심 있으신 분들은 아래 링크를 참고해 주세요😁
'TIL' 카테고리의 다른 글
Java 대용량 데이터 이중반복문 vs 배열 사용 속도차이(예시) (4) | 2024.01.24 |
---|---|
Java 엑셀 만드는 방법 완벽정리(JS에서 Controller까지) (0) | 2024.01.15 |
jstree 핸들링 방법(이전 선택 값 남아있는 오류) (1) | 2024.01.09 |
Java Spring Message 적용하는 방법 완벽정리 (0) | 2024.01.04 |
JavaScript 다중 검색 기능 만들기 (0) | 2023.09.26 |