필요한 지식(앞으로 계속 다시볼 내용...ㅎㅎㅎ)
- Java : jdk 11 이상 (modern java 에 대해 알아야 함)
- spring boot : 스프링 애플리케이션 프레임워크
- gradle : 프로젝트 관리 및 빌드
- JUnit5(Jupyter)와 spring test : 기본적인 기능 테스트를 위해 필요함.
- Spring 관련 전반 지식 : Web MVC, RESTFul 서비스, Spring Data JPA, AOP, SpEL
- lombok : Getter/Setter/Builter 메소드 등 지원
- thymeleaf : 웹 프로그램을 지원함
- mysql : 데이터 테스트
- IntelliJ IDE
프로젝트 세팅
settings.gradle에서는 전체 프로젝트의 구조를 빌드하게된다.
보통 한개의 프로젝트를 구성하지만, 여러 모듈 프로젝트들을 포함하게 되는 경우가 있는데 해당 강의에서는 여러 모듈 프로젝트를 사용하기 때문에 group으로 관리하기 위해 다음과 같은 자동 빌드 스크립트를 사용한다.
rootProject.name = 'SpringSecurity'
["comp", "web", "server"].each {
def compDir = new File(rootDir, it)
if(!compDir.exists()){
compDir.mkdirs()
} // comp,web,server 디렉터리를 만듬
compDir.eachDir {subDir ->
def gradleFile = new File(subDir.absolutePath, "build.gradle")
if(!gradleFile.exists()){
gradleFile.text =
"""
dependencies {
}
""".stripIndent(20)
} // 각각 프로젝트 하위에 build.gradle을 생성, default 값을 가지고
[ // 다음과 같은 리소스들을 만들어줌
"src/main/java/com/example/springsecurity",
"src/main/resources",
"src/test/java/com/example/springsecurity",
"src/test/resources"
].each {srcDir->
def srcFolder = new File(subDir.absolutePath, srcDir)
if(!srcFolder.exists()){
srcFolder.mkdirs()
}
}
def projectName = ":${it}-${subDir.name}";
include projectName
project(projectName).projectDir = subDir
}
}
루트 디렉터리의 build.gradle에 전체 하위 프로젝트의 공통 설정에 대한 사항을 세팅함
buildscript {
ext {
spring = "2.7.2"
boot = "org.springframework.boot"
lombok = "org.projectlombok:lombok"
}
repositories {
mavenCentral()
}
dependencies {
classpath("$boot:spring-boot-gradle-plugin:$spring")
}
}
allprojects {
group = "com.example.springsecurity"
version = "1.0.0"
}
subprojects {
apply plugin: "java"
apply plugin: boot
apply plugin: "io.spring.dependency-management"
apply plugin: "idea"
repositories {
mavenCentral()
}
configurations {
// developmentOnly
runtimeClasspath {
extendsFrom developmentOnly
}
}
dependencies {
// developmentOnly("$boot:spring-boot-devtools")
implementation "$boot:spring-boot-starter-security"
implementation 'com.fasterxml.jackson.core:jackson-annotations'
compileOnly lombok
testCompileOnly lombok
annotationProcessor lombok
testAnnotationProcessor lombok
testImplementation "$boot:spring-boot-starter-test"
}
test {
useJUnitPlatform()
}
}
["comp", "web"].each {
def subProjectDir = new File(projectDir, it)
subProjectDir.eachDir {dir->
def projectName = ":${it}-${dir.name}"
project(projectName){
bootJar.enabled(false)
jar.enabled(true)
}
}
}
["server"].each {
def subProjectDir = new File(projectDir, it)
subProjectDir.eachDir {dir->
def projectName = ":${it}-${dir.name}"
project(projectName){
}
}
}
help.enabled(false)
출처 : 한 번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.