hrming
[Spring] Spring Tag Library - <spring:message> 태그 본문
Spring Tag Library
: Spring Framework에서 제공하는 태그 라이브러리로, Spring의 다양한 기능을 JSP에서 쉽게 사용할 수 있도록 지원.
■ 주요 기능
- 폼 처리 (spring-form): form:form, form:input, form:errors등 폼 관련 태그를 제공
- 메시지 출력(spring-messages): 다국어 지원을 위한 메시지 출력을 쉽게할 수 있는 태그(spring:message)를 제공
- URL생성( (spring-url) : URL을 동적으로 생성하는 태그(spring:url)를 제공
■ 장점
- Spring MVC와 통합되어 있어 Spring의 기능을 JSP에서 쉽게 사용할 수 있음.
- 코드의 재사용성과 유지보수성을 높여줌
스프링 태그 라이브러리를 사용하기 위해서는 아래처럼 tablib 지시문을 작성해야 한다.
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:message> 태그
: 클라이언트의 locale 정보에 따라 다른 메시지를 출력할 필요가 있을 때 사용
: 애플리케이션의 국제화에 있어 유용하게 사용
: 사용을 위해 아래 두가지 선행 작업이 필요
1. 여러 언어로 작성된 Resource Bundle은 src/main/resource 디렉터리 내에, locale별로 .properties로 생성
2. MessageSource bean 생성 (XML or JAVA 기반)
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:messages"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
@Configuration
public class AppConfig {
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
}
2-1. basename 속성
- basename 속성은 메시지 번들 파일의 기본 이름을 지정합니다. 여기서 "classpath:messages"는 클래스패스 내에서 messages라는 이름의 파일을 찾는다는 의미입니다.
- messages는 파일의 접두사이고, 실제 파일 이름은 로케일에 따라 messages.properties, messages_en.properties, messages_ko.properties 등으로 구분됩니다.
2-2. 클래스패스에서 파일 찾기
- classpath: 접두사는 Spring이 이 파일들을 클래스패스에서 찾도록 합니다.
- 예를 들어, src/main/resources/messages.properties 파일과 같은 위치에서 찾습니다.
** Spring Boot를 포함한 일반적인 Spring 애플리케이션에서 resources 폴더는 기본적으로 클래스패스의 일부로 간주되며, 이 디렉터리는 애플리케이션의 리소스 파일 (예: 프로퍼티 파일, 메시지 번들, 정적 리소스 등)을 저장하는 장소로 사용됨. . MessageSource bean의 설정에서 이 resources 폴더를 기본 루트 디렉터리로 사용하는 것은 Spring의 관례.
2-3. 메시지 로드
- Spring은 애플리케이션 실행 시 지정된 위치에서 메시지 번들 파일을 로드합니다.
- 메시지를 사용할 때는 code 값을 이용하여 해당 메시지를 가져옵니다.
✔️ MessageSource bean의 역할
1. 국제화 (Internationalization, i18n)
: 여러 언어로 애플리케이션을 지원해야 할 때, 메시지 번들을 사용하여 각 언어에 대한 메시지를 정의
: MessageSource bean은 이 메시지 번들 파일에서 메시지를 읽어와서 현재 사용자의 로케일에 맞는 메시지를 제공
2. 중앙화된 메시지 관리
: 애플리케이션의 모든 메시지를 중앙에서 관리할 수 있게 하여, 코드에서 하드코딩된 문자열을 제거하고 유지보수를 쉽게함
: 메시지를 변경해야 할 경우, 메시지 번들 파일만 수정
3. 다양한 메시지 형식 지원
: 단순 텍스트뿐만 아니라, 매개변수를 포함한 형식화된 메시지 지원
: 예를 들어, "Hello, {0}!"와 같은 메시지 템플릿을 사용하여, 런타임에 값을 채워 넣을 수 있다.
참고 및 출처 :
ChatGPT
https://blog.naver.com/aservmz/222225560205
[Spring] 29. 스프링 JSP 태그 라이브러리와 <spring:message> 태그
#20210130 #SpringFramework #스프링프레임워크 #스프링 #스프링MVC #JSP태그라이브러리 #스프링커...
blog.naver.com
'Spring' 카테고리의 다른 글
[Spring] @Transactional 어노테이션을 추가해도 트랜잭션이 적용되지 않는 경우 (2) | 2024.09.19 |
---|---|
[Spring] Entity, DTO, VO (0) | 2024.07.08 |
[Spring] @Value (0) | 2024.05.10 |
[Spring] Spring Security 로그인한 유저 정보 가져오기 (0) | 2024.03.16 |
[Spring] Spring Security - Form login (0) | 2024.03.15 |