[Spring Legacy] spring-web-6 & Thymeleaf 적용하기

식빵·2024년 6월 15일
0

spring-legacy-configure

목록 보기
9/9

이번에 회사의 Spring Legacy (= spring boot 사용 안하는 환경) 프로젝트에 있는
jsp 기반의 Template Engine 을 쓰는 코드를 모두 Thymeleaf 로 변경하려고 계획 중입니다.

이를 위해서 사전에 어떻게 Thymeleaf 를 레거시 프로젝트에 적용할 수 있는지 조사했고,
그 방법을 깃허브에 올려서 공유합니다.

github repository :
https://github.com/CodingToastBread/spring-6-legacy-web.git

주의할 점은 java 21 , tomcat 10.1.x, spring-web 6 을 사용한다는 겁니다.
일하는 곳에서 이렇게 업그레이드 해서 저도 똑같이 맞췄습니다.


핵심적으로 봐야할 곳은
spring-web-legacy/src/main/webapp/WEB-INF/servlet-context.xml
경로에 있는 아래 설정들입니다.

<!--thymeleaf  -->
<!-- https://www.thymeleaf.org/doc/tutorials/3.1/thymeleafspring.html
     - 2 The SpringStandard Dialect 목차 참고 -->
<bean id="templateResolver"
      class="org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver">
    <property name="prefix" value="/WEB-INF/templates/" />
    <property name="suffix" value=".html" />
</bean>

<bean id="templateEngine"
      class="org.thymeleaf.spring6.SpringTemplateEngine">
    <property name="templateResolver" ref="templateResolver" />
</bean>

<bean class="org.thymeleaf.spring6.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine" />
    <property name="contentType" value="text/html"/>
    <property name="characterEncoding" value="UTF-8" />
</bean>

Java 설정으로는 아래와 같습니다.

@Configuration
public class WebConfiguration extends WebMvcConfigurationSupport {

	/* ...생략... */

	@Bean
	public SpringResourceTemplateResolver templateResolver() {
		SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
		resolver.setPrefix("/WEB-INF/templates/");
		resolver.setSuffix(".html");
		return resolver;
	}
	
	@Bean
	public SpringTemplateEngine templateEngine(SpringResourceTemplateResolver templateResolver) {
		SpringTemplateEngine templateEngine = new SpringTemplateEngine();
		templateEngine.setTemplateResolver(templateResolver);
		return templateEngine;
	}
	
	@Bean
	public ThymeleafViewResolver thymeleafViewResolver(SpringTemplateEngine templateEngine) {
		ThymeleafViewResolver resolver = new ThymeleafViewResolver();
		resolver.setTemplateEngine(templateEngine);
		resolver.setContentType(MediaType.TEXT_HTML_VALUE);
		resolver.setCharacterEncoding(StandardCharsets.UTF_8.toString());
		return resolver;
	}
}

그리고 이를 위한 maven dependecy 는 아래 2개를 꼭 넣어줘야 합니다.

<!-- Web > Template Engine -->
<dependency>
  <groupId>org.thymeleaf</groupId>
  <artifactId>thymeleaf</artifactId>
</dependency>
<dependency>
  <groupId>org.thymeleaf</groupId>
  <artifactId>thymeleaf-spring6</artifactId>
</dependency>

테스트해보고 싶으신 분들은 WEB-INF/templates 경로에 html 생성하고,
그에 맞는 Controller 를 생성하여 조작해보시면 되겠습니다.

profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글