프로젝트/게시판 프로젝트 - JSP, SERVLET, ORACLE
[개발환경 설정] - 의존성 주입, 프론트앤드 프로젝트 생성, 백앤드와 프론트앤드 통신
Ch's Lee
2025. 11. 18. 17:47
1. 의존성 주입

-- 추가적인 유용한 의존성 [밑에 문장에 포함]
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.7'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'com.cbPr'
version = '0.0.1-SNAPSHOT'
description = 'TestCRUD'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
/* ===== Spring Boot Starters ===== */
// REST API 웹 애플리케이션 개발
implementation 'org.springframework.boot:spring-boot-starter-web'
// JPA를 사용한 데이터베이스 연동
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// 입력값 검증 (@Valid, @NotNull 등)
implementation 'org.springframework.boot:spring-boot-starter-validation'
// Spring Security (인증/인가)
implementation 'org.springframework.boot:spring-boot-starter-security'
// Actuator (헬스체크, 메트릭 모니터링)
implementation 'org.springframework.boot:spring-boot-starter-actuator'
// AOP (관점 지향 프로그래밍 - 로깅, 트랜잭션 등)
implementation 'org.springframework.boot:spring-boot-starter-aop'
// Cache 추상화 (선택사항)
implementation 'org.springframework.boot:spring-boot-starter-cache'
/* ===== Database ===== */
// MariaDB JDBC 드라이버
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
/* ===== QueryDSL ===== */
// QueryDSL JPA 지원 (타입 안전 쿼리 작성)
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"
/* ===== Lombok ===== */
// 보일러플레이트 코드 자동 생성 (@Getter, @Setter, @Builder 등)
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
/* ===== API 문서화 (Swagger) ===== */
// SpringDoc OpenAPI 3.0 (Swagger UI)
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
/* ===== JWT 인증 (선택사항) ===== */
// JWT 토큰 생성 및 검증
implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.3'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.3'
/* ===== JSON 처리 ===== */
// Jackson Java 8 날짜/시간 타입 지원
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
// Jackson Java 8 Optional 지원
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8'
/* ===== 유틸리티 라이브러리 ===== */
// Apache Commons Lang (문자열, 배열 유틸리티)
implementation 'org.apache.commons:commons-lang3:3.14.0'
// Apache Commons Collections (컬렉션 유틸리티)
implementation 'org.apache.commons:commons-collections4:4.4'
// Google Guava (강력한 유틸리티 라이브러리)
implementation 'com.google.guava:guava:32.1.3-jre'
/* ===== MapStruct (DTO 변환) ===== */
// 객체 간 매핑 자동화
implementation 'org.mapstruct:mapstruct:1.5.5.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final'
// Lombok과 MapStruct 함께 사용
annotationProcessor 'org.projectlombok:lombok-mapstruct-binding:0.2.0'
/* ===== 캐싱 구현체 (선택사항) ===== */
// Caffeine 고성능 인메모리 캐시
implementation 'com.github.ben-manes.caffeine:caffeine:3.1.8'
/* ===== 개발 도구 ===== */
// 개발 시 자동 재시작, LiveReload 등
developmentOnly 'org.springframework.boot:spring-boot-devtools'
// application.yml 자동완성 지원
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
/* ===== 테스트 ===== */
// Spring Boot 테스트 지원 (JUnit 5, Mockito 등)
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// Spring Security 테스트 지원
testImplementation 'org.springframework.security:spring-security-test'
// JUnit Platform
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
/* ===== QueryDSL 설정 ===== */
// QueryDSL Q클래스 생성 경로 설정
def querydslDir = "$buildDir/generated/querydsl"
sourceSets {
main.java.srcDirs += [querydslDir]
}
tasks.withType(JavaCompile) {
options.generatedSourceOutputDirectory = file(querydslDir)
}
// clean 시 QueryDSL 생성 파일도 삭제
clean {
delete file(querydslDir)
}