hrming

[Spring] Spring Tag Library - <spring:message> 태그 본문

Spring

[Spring] Spring Tag Library - <spring:message> 태그

hrming 2024. 6. 5. 11:07

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

 

 

Comments