From ed16fdafe657722e3395e09bb5d8215e08bfc625 Mon Sep 17 00:00:00 2001 From: CSKIM Date: Tue, 21 Apr 2026 00:40:14 +0900 Subject: [PATCH] =?UTF-8?q?=ED=8F=AC=ED=8A=B8=ED=8F=B4=EB=A6=AC=EC=98=A4?= =?UTF-8?q?=20=EA=B4=80=EB=A0=A8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/DevelopmentTemplateConfig.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/main/java/kr/iotdoor/boot/config/DevelopmentTemplateConfig.java diff --git a/src/main/java/kr/iotdoor/boot/config/DevelopmentTemplateConfig.java b/src/main/java/kr/iotdoor/boot/config/DevelopmentTemplateConfig.java new file mode 100644 index 0000000..0c7c3c2 --- /dev/null +++ b/src/main/java/kr/iotdoor/boot/config/DevelopmentTemplateConfig.java @@ -0,0 +1,39 @@ +package kr.iotdoor.boot.config; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver; +import org.thymeleaf.templatemode.TemplateMode; + +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; + +@Configuration +@ConditionalOnProperty(prefix = "iotdoor.dev-template", name = "enabled", havingValue = "true", matchIfMissing = true) +public class DevelopmentTemplateConfig { + + private static final Path SOURCE_TEMPLATE_PATH = Path.of("src/main/resources/templates") + .toAbsolutePath() + .normalize(); + + @Bean + public SpringResourceTemplateResolver sourceTemplateResolver(ApplicationContext applicationContext) { + SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); + resolver.setApplicationContext(applicationContext); + resolver.setPrefix(toFilePrefix(SOURCE_TEMPLATE_PATH)); + resolver.setSuffix(".html"); + resolver.setTemplateMode(TemplateMode.HTML); + resolver.setCharacterEncoding(StandardCharsets.UTF_8.name()); + resolver.setCheckExistence(true); + resolver.setCacheable(false); + resolver.setOrder(0); + return resolver; + } + + private String toFilePrefix(Path path) { + String uri = path.toUri().toString(); + return uri.endsWith("/") ? uri : uri + "/"; + } +}