
안녕하세요. 오늘은 스프링부트 머스테치(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 |