나는 김영한 강사님의 queryDsl 강의를 듣고있다.
강의 내용의 springBoot의 버전은 2.6일 것이다.
springBoot 2.7 이상에서는 강의 내용대로는 queryDsl 설정이 안된다는 것을 알 수 있다.
김영한 강사님의 queryDsl 강의 내용과 같이 설정했다면
Unable to load class 'com.mysema.codegen.model.Type'.
위와 같은 에러가 발생했을 것이다.
정상 작동하는 설정 방법을 아래 적어겠다.
springBoot 2.7이상에서는 어떻게 설정하면 좋을지 알아보자.
(사실 필자는 2.7만 쓰기 때문에 3이상은 아래 설정으로 잘 되는지 모르겠다.)
제 설정 방법을 참고하여 3이상을 설정한 분은 댓글 부탁드립니다.
참고한 블로그에 있는 build.gradle 설정을 가져와 실행해보고, 직접 실행해보며 내가 쓰는 설정을 만들었다.
참고 블로그의 내용을 굳이 수정하여 아래와 같이 설정을 쓰는 이유를 적어보겠다.
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.12'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
group = 'study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
// queryDSL 설정
implementation "com.querydsl:querydsl-jpa"
implementation "com.querydsl:querydsl-core"
implementation "com.querydsl:querydsl-collections"
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" // querydsl JPAAnnotationProcessor 사용 지정
annotationProcessor "jakarta.annotation:jakarta.annotation-api" // java.lang.NoClassDefFoundError (javax.annotation.Generated) 대응 코드
annotationProcessor "jakarta.persistence:jakarta.persistence-api" // java.lang.NoClassDefFoundError (javax.annotation.Entity) 대응 코드
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
//querydsl 추가 시작
def querydslDir = "$buildDir/generated/querydsl"
// java source set 에 querydsl QClass 위치 추가
sourceSets {
main.java.srcDirs += [ querydslDir ]
}
// gradle clean 시에 QClass 디렉토리 삭제
clean {
delete file(querydslDir)
}
//querydsl 추가 끝
이만 글 줄인다. 해당 설정으로 되는 사람, 안되는 사람 모두 댓글 부탁드려요.