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);
}
}
궁금한 점이 있으시면 편하게 댓글 남겨주세요!
'JAVA & Spring' 카테고리의 다른 글
[Java] 클래스(Class)란? 아주 쉽게 그림으로 정리(+코드) (1) | 2024.10.16 |
---|---|
[ Spring ] @Autowired, @Resource, @Inject 차이점 아주 쉽게 정리 (1) | 2024.10.16 |
[Spring] Log 출력 및 총 정리 (0) | 2024.01.18 |
[Spring] 인텔리제이 Lombok(롬복) 추가 하는 방법(gradle, maven) (0) | 2024.01.10 |
[Spring Security] WebSecurityConfiguration 총정리 (0) | 2023.09.12 |
댓글