Backend/Java

Spring Boot - Mustache

개발자의 첫 걸음 2025. 12. 12. 10:00

안녕하세요. 오늘은 스프링부트 머스테치(Mustache)에 대해 알아볼게요.

 

 

 

Mustache

 

머스테치(Mustache)는 로직 없는(Logic-less) 템플릿 엔진으로

 

서버나 클라이언트에서 데이터를 템플릿(HTML, 텍스트 등)에 깔끔하게 삽입하기 위해 사용하는 템플릿 언어예요.

 

템플릿 안에서는 조건문, 반복문 같은 프로그래밍 로직을 직접 작성하지 않고


단순한 태그(placeholder)를 작성하고, 렌더링 할 때 데이터(JSON 등)를 넣어 처리해요.

 

그래서 단순하고 읽기가 쉽고, 뷰와 로직이 완전히 분리, 다양한 언어에서 동일한 템플릿 사용이 가능해요.

 

 

Mustache 문법

 

머스테치는 중괄호 두 개 {{}}를 사용하는데요. 어떻게 사용하냐에 따라 출력이 달라져요.

 

1. 변수 출력

Hello, {{name}}!

 

2. 반복(Section)

{{#items}}
  <li>{{.}}</li>
{{/items}}

// 데이터
{ "items": ["apple", "banana"] }

 

3. 조건(Section) — true/false 존재 여부 기반

{{#isAdmin}}
  <p>Welcome admin!</p>
{{/isAdmin}}

 

4. 반대 조건(Inverted Section)

{{^isAdmin}}
  <p>No permission.</p>
{{/isAdmin}}

 

5. HTML Escape 자동 적용

{{title}}

특수문자는 자동 escape
안 하려면: {{{title}}}

 

 

 

Mustache 다양한 언어에서 사용 가능

 

Mestache는 아주 단순한 구조라 거의 모든 언어에서 구현체가 있어요.

 

한 번 작성한 템플릿을 여러 언어에서 재사용할 수 있다는 점이 장점이에요.

 

 

다음은 인텔리제이에서 java 프로젝트로 Mustache사용 예시예요.

 

1. build.gradle 설정

dependencies {
    implementation 'com.github.spullara.mustache.java:compiler:0.9.10'
}

 

2. 템플릿 파일 작성 (src/main/resources/templates/hello.mustache)

// 폴더 구조
src
 └─ main
     ├─ java
     └─ resources
         └─ templates
             └─ hello.mustache

 

3. 머스테치 작성 

// hello.mustache

<h1>Hello, {{name}}!</h1>

<ul>
{{#items}}
    <li>{{.}}</li>
{{/items}}
</ul>


// app.java

package org.example;

import com.github.mustachejava.DefaultMustacheFactory;
import com.github.mustachejava.Mustache;
import com.github.mustachejava.MustacheFactory;

import java.io.StringWriter;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class App {
    public static void main(String[] args) {
        MustacheFactory mf = new DefaultMustacheFactory("templates");
        Mustache mustache = mf.compile("hello.mustache");

        Map<String, Object> data = new HashMap<>();
        data.put("name", "IntelliJ User");
        data.put("items", Arrays.asList("Apple", "Banana", "Orange"));

        StringWriter writer = new StringWriter();
        mustache.execute(writer, data);

        System.out.println(writer.toString());
    }
}


// 실행 결과

<h1>Hello, IntelliJ User!</h1>

<ul>
    <li>Apple</li>
    <li>Banana</li>
    <li>Orange</li>
</ul>

 

머스테치 예시에 대한 핵심 정리표 예요.

 

요소 내용
템플릿 명 hello.mustache
템플릿 위치 src/main/resources/templates/
호출 코드 new DefaultMustacheFactory("templates")
데이터 전달 Map 또는 POJO

 

 

 

여기까지 스프링부트 머스테치에 대해 알아봤는데요.

 

머스테치는 기존에 배운 자료에 비해 간단하고 배우기 쉬운 프로그램이었던 것 같아요.

 

여러분들을 어떠셨나요?

'Backend > Java' 카테고리의 다른 글

Spring - interceptor  (1) 2025.12.16
영속성 컨텍스트 (Persistence Context)  (1) 2025.12.14
Spring Security OAuth2  (0) 2025.12.08
RESTful API  (0) 2025.09.07
@Transactional  (0) 2025.09.04