본문 바로가기
JAVA & Spring

[Spring Boot] Thymeleaf decoupled logic Config 등록 방법

by 알기 쉬운 코딩 사전 2024. 4. 1.
반응형

Thymeleaf의 decoupled logic 이란?

 

decoupled logic은 Thymeleaf에서 만든 기술로 <thlogic>태그를 이용하여 기존 html 코드와 Thymeleaf 로직을 분리하는 기술입니다.

여기에서 얻는 장점은 디자이너가 html을 순수한 마크업 형태로 확인할 수 있어  보다 직관적인 확인이 가능합니다.

 

하지만 아직까지는 스프링에서 yml 파일을 이용한 자동 bean 등록이 되지 않아서 직접 bean 등록을 해주어야 합니다.

참고로 3.X 이상 버전과 2.X 버전에서의 bean 등록 방법이 조금 다릅니다. 그래서 아래 2가지 등록 방법을 모두 작성할 테니 필요한 부분 사용하시면 될 것 같습니다.

 

Spring Boot 3.X에서의 bean 등록 방법

 

1. 해당 Config 작성

 

ThymeleafConfig.java

@Configuration
public class ThymeleafConfig {
    @Bean
    public SpringResourceTemplateResolver thymeleafTemplateResolver(
            SpringResourceTemplateResolver defaultTemplateResolver,
            Thymeleaf3Properties thymeleaf3Properties
    ) {
        defaultTemplateResolver.setUseDecoupledLogic(thymeleaf3Properties.decoupledLogic());

        return defaultTemplateResolver;
    }
    
    @ConfigurationProperties("spring.thymeleaf3")
    public record Thymeleaf3Properties (boolean decoupledLogic){}
}

 

 

2. build.gradle에 해당 어노테이션 프로세서 추가 후 build

 

build.gradle

annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'

 

3. yml 파일 등록

 

application.yml

  thymeleaf3:
    decoupled-logic: true

 

yml 파일에 자동 등록이 되지 않는 경우에는 build clean 후 다시 build를 시켜보시거나 혹은 패키지명을 다시 한번 확인해 주시고 IDE를 재부팅 하시면 됩니다!

 

4. main에 @ConfigurationPropertiesScan 어노테이션 추가

 

DemoApplication.java

@ConfigurationPropertiesScan // 추가
@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

 

 


 

Spring Boot 2.X에서의 bean 등록 방법

 

1. 해당 Config 작성

 

ThymeleafConfig.java

@Configuration
public class ThymeleafConfig {
    @Bean
    public SpringResourceTemplateResolver thymeleafTemplateResolver(
            SpringResourceTemplateResolver defaultTemplateResolver,
            Thymeleaf3Properties thymeleaf3Properties
    ) {
        defaultTemplateResolver.setUseDecoupledLogic(thymeleaf3Properties.decoupledLogic());

        return defaultTemplateResolver;
    }

    @RequiredArgsConstructor
    @Getter
    @ConfigurationProperties("spring.thymeleaf3")
    public static class Thymeleaf3Properties{
            private final boolean decoupledLogic;
    }
}

 

2. build.gradle에 해당 어노테이션 프로세서 추가 후 build

 

build.gradle

annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'

 

3. yml 파일 등록

 

application.yml

 

  thymeleaf3:
    decoupled-logic: true

 

yml 파일에 자동 등록이 되지 않는 경우에는 build clean 후 다시 build를 시켜보시거나 혹은 패키지명을 다시 한번 확인해 주시고 IDE를 재부팅 하시면 됩니다!

 

 

4. main에 @ConfigurationPropertiesScan 어노테이션 추가

 

DemoApplication.java

@ConfigurationPropertiesScan // 추가
@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

 

 

궁금한 점이 있으시면 편하게 댓글 남겨주세요!

반응형

댓글