Spring Security에 Kotlin DSL을 사용했을 때 빌드가 되지 않는다...
Kotlin으로 Spring Security 개발을 하던 중, 공식 문서와 동일한 코드인데 IntelliJ에서는 빌드가 되지 않는 오류가 계속 발생했다..
코틀린 DSL과 자바와의 가장 큰 차이점을 꼽아보자면,
자바는 람다 체이닝 메서드(`.`)을 통해 매개변수를 구현해 주지만,
코틀린은 DSL을 통해 매개변수를 구현해 준다는 것이었다.
근데 DSL이 대체 무엇일까?
DSL(Domain Specific Language)
DSL은 도메인 특정 언어, 쉽게 풀어 말하자면 특정 도메인에 국한된 문법이라고 생각하면 된다. 이를 통해 우리는 특정 도메인의 내부 로직 및 메서드를 추상화하여 가독성을 높이고 재사용 및 유지보수성을 높일 수 있다. DSL은 특정 프로그래밍 언어보다 매우 쉬운 사용성을 가지고 있기에, 마치 일반적인 영문장을 보는 듯한 착각을 주기도 하는데, 이는 DSL의 핵심 목적이 해당 도메인에 대한 이해도가 있다면 해당 도메인을 누구나 편하게 다룰 수 있도록 하는 것이기 때문이다.
더 자세한 내용은 해당 블로그에 자세히 설명되어 있다! https://blog.imqa.io/kotlin-dsl/
Kotlin DSL, Gradle 빌드 기본 언어 채택… 왜 Kotlin DSL일까?
지난 4월, Google은 Kotlin DSL을 Android 앱용 Gradle 빌드 파일의 기본 스크립트로 사용한다고 밝혔습니다. 구글이 채택한 Kotlin DSL이 무엇인지, 어떤 장점이 있는지 정리해 보았습니다.
blog.imqa.io
해결 방법
공식 문서에서 나온 문법이 작동이 되지 않을 리가 없는데.. 뭐가 문제지? 고민하던 찰나, 미처 보지 못한 경고문을 뒤늦게 발견했다.
IntelliJ에서 자동으로 코틀린 DSL을 검사하고 확인해 줄 수 없기에, 해당 의존성을 직접 import 해야 하는 것이었다.
import org.springframework.security.config.annotation.web.invoke
해당 의존성을 수동으로 추가해 주면, Spring Security에서 다음과 같이 코틀린 DSL을 문제없이 사용할 수 있다.
'스프링 부트 > 오류' 카테고리의 다른 글
[gradle] 멀티모듈에서 컴포넌트 스캔이 되지 않는 문제 (0) | 2025.01.13 |
---|---|
[Spring Security] 스프링에서 CORS를 해결하는 또다른 방법 (0) | 2024.12.15 |
[JPA] ExecutorService를 통한 엔티티가 변경되지 않는 않는 오류 (1) | 2024.11.19 |
[gradle] 멀티 모듈에서 특정 모듈을 삭제했을 때 빌드가 실패하는 오류 (0) | 2024.11.19 |