728x90
Error creating bean with name 'requestMappingHandlerAdapter' defined in class path resource 에러 해결
문제를 찾아보니
GuestboookReposiory.java
package com.example.ex3.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import com.example.ex3.entity.Guestbook;
public interface GuestbookRepository extends JpaRepository <Guestbook, Long>, QuerydslPredicateExecutor<Guestbook>{
}
해당 페이지에서
QuerydslPredicateExecutor<Guestbook>을 추가하니까 발생한 오류 였다
이유를 찾아보니 이름이 중복되었다는..?
잘모르겠다
아무튼 QuerydslPredicateExecutor은 Q도메인 클래스를 얻어와야 합니다.
Q도메인 클래스는 프로젝트 명아래 build에 있어야 합니다.
ex3.build.generated.querydsl[main].~~~
아래의 이미지와 같이 나와야 합니다..
그런데 계속 생성이 안됐습니다.
문제는 build.gradle의 문제인데
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
plugins {
id 'java'
id 'war'
id 'org.springframework.boot' version '3.1.6'
id 'io.spring.dependency-management' version '1.1.4'
id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
// JUnit5
implementation 'org.junit.platform:junit-platform-launcher:1.5.2'
implementation 'org.junit.jupiter:junit-jupiter:5.5.2'
implementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '3.1.4'
implementation group: 'org.thymeleaf.extras', name: 'thymeleaf-extras-java8time', version: '3.0.4.RELEASE'
runtimeOnly 'com.h2database:h2'
//querydsl 추가
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
// error
implementation 'javax.persistence:javax.persistence-api:2.2'
}
tasks.named('bootBuildImage') {
builder = 'paketobuildpacks/builder-jammy-base:latest'
}
test{
useJUnitPlatform()
}
def querydslDir = "$buildDir/generated/querydsl"
querydsl{
jpa=true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
초기의 저의 gradle 파일입니다.
본인의 버전에 맞춰서 설치해야합니다.
중요한 부분은 query부분,
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
이부분인 implementation 방식이 있으니 확인해주세요
implementation 'com.querydsl:querydsl-jpa:5.0.0'
implementation 'com.querydsl:querydsl-apt:5.0.0'
등등
이부분에서
Q도메인 을 impletation해주면 됩니다.
//Querydsl 추가
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
원래 implementation했다면 안넣어두 되지만 저는 안전하게 모두 넣었습니다.
다시 재빌드해주면
빌드하고 실행해주면
아래와 같이 Q도메인이 생성됩니다.
728x90
'백 > Spring, Spring Boot' 카테고리의 다른 글
[Spring] Thymeleaf의 정의 및 문법, Thymeleaf 프로젝트 생성하기 환경 설정 (0) | 2023.11.28 |
---|---|
[Spring Boot] 인텔리제이(IntelliJ) 최신 버전 spring boot 프로젝트 생성하기 3.x.x 버전 프로젝트 생성하기 (0) | 2023.10.24 |
[Spring Boot] 스프링 부트 시작하기 전 알아야 하는 내용 (2) | 2023.09.07 |
[Spring] 유효성 검사, 에러 메시지 보여주기 예제 코드 도서 등록 시 에러 메시지 (0) | 2023.07.12 |
[Spring] 다국어 처리 properties파일 리소스 파일, 다양한 언어 처리 하기 (0) | 2023.07.06 |