작성
·
708
1
학습을 하면서 개인 프로젝트를 진행하려 프로젝트를 생성하였습니다.
다음 코드는 프로젝트 설정입니다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.3'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'project'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
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'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// Querydsl 추가
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta'
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
// // 쿼리 파라미터 로그
// implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8'
}
tasks.named('test') {
useJUnitPlatform()
}
clean {
delete file('src/main/generated')
}
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/healthcommunity
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
# show_sql: true
format_sql: true
logging.level:
org.hibernate.SQL: debug
# org.hibernate.type: trace
다음은 애플리케이션 코드입니다.
package project.healthcommunity;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HealthCommunityApplication {
public static void main(String[] args) {
SpringApplication.run(HealthCommunityApplication.class, args);
}
}
package project.healthcommunity.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(){
return "hello";
}
}
위와같이 스프링 빈에 정상 등록되는지 테스트 해보았습니다.
8080포트로 접속하면 정상적으로 오류 페이지가 떴습니다.
하지만 8080/hello로 접속해도 404오류가 발생하였습니다.
한참을 구글링 했지만 해답을 찾지 못했습니다.
그러다
스프링 부트의 버전을 3.0.3에서 3.00으로 바꾸어 보았더니 스프링 빈에 정상적으로 등록되어 조회되는것을 볼수 있었습니다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.0'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'project'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
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'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// Querydsl 추가
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta'
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
// // 쿼리 파라미터 로그
// implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8'
}
tasks.named('test') {
useJUnitPlatform()
}
clean {
delete file('src/main/generated')
}
단순히 build.gradle에서 스프링 부트의 버전을 바꾸어주었는데 정상 작동하였습니다.
3.03에서는 컴포넌트 스캔이 정상적으로 작동하려면 어떻게 해야하는지 궁금합니다!
3.03에서는 설정이 변경된 것인가요?
답변 1
0
안녕하세요, 양지웅 님. 공식 서포터즈 y2gcoder 입니다.
해당 현상을 저도 재현해보고자 최대한 비슷한 라이브러리와 설정값으로 만들어보고자 했습니다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.0.3'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
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'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
//querydsl
// implementation "com.querydsl:querydsl-core"
// implementation "com.querydsl:querydsl-jpa"
// annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
// annotationProcessor "jakarta.persistence:jakarta.persistence-api"
// annotationProcessor "jakarta.annotation:jakarta.annotation-api"
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta'
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
//쿼리 파라미터 로그
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8'
}
tasks.named('test') {
useJUnitPlatform()
}
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/healthcommunity
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
logging:
level:
org.hibernate.SQL: debug
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "hello";
}
}
이렇게 하고 h2 db를 실행한 상태에서 호출해본 결과
잘 작동하는 것을 확인할 수 있습니다.
제 생각에는 환경 설정 과정에서 뭔가가 꼬인 것 같습니다.
다시 설정해보시는 것은 어떠실까 생각합니다. ㅜㅜ
감사합니다.