스프링 시큐리티 역시 필수적으로 해야 할 소양이기 때문에 이전에 했던 기억은 모두 지우고
새롭게 다시 정리하려고 합니다.
- 환경 구성
1. start.spring.io/ 에 접속
* 패스트 캠퍼스에서는 git에서 다운받고 clone을 하라고 했지만 아래와 같이
gradle: command not found 가 발생하였다...
gradle을 직접 설치하는 방법이 있었는데, 이것보단 직접 프로젝트를 다운받는게 낫다고 생각하여
아래와 같이 셋팅 하였습니다.
2. 위와 같이 설정을 잡아주고 프로젝트를 다운 받습니다. (세부 설정은 Gradle로 재 설정)
* 혹시 그래도 나는 git으로 clone 꼭 받고 싶다 하시는분들은 아래 링크보고 하시면 됩니다.
참고 사이트 : jtrimind.github.io/troubleshooting/2020/09/29/gradle-command-not-found.html
3. 기존에 인텔리제이가 구축 되어있다는 가정하에 순서를 진행하겠습니다.
순서 : 상위 탭 file -> open -> 해당 프로젝트 찾아서 OK
setting.gradle 셋팅
rootProject.name = 'SpringSecurityStudy'
["comp", "web", "server"].each {
def compDir = new File(rootDir, it)
if (!compDir.exists()) {
compDir.mkdirs()
}
compDir.eachDir { subDir ->
def gradleFile = new File(subDir.absolutePath, "build.gradle")
if (!gradleFile.exists()) {
gradleFile.text =
"""
dependencies {
}
""".stripIndent(20)
}
[
"src/main/java/com/sp/fc",
"src/main/resources",
"src/test/java/com/sp/fc",
"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 셋팅
- 루트 폴더의 build.gradle 에서는 전체 하위 프로젝트의 공통 설정에 대한 사항을 기술해 넣습니다.
buildscript {
ext {
spring = "2.4.1"
boot = "org.springframework.boot"
lombok = "org.projectlombok:lombok"
}
repositories {
mavenCentral()
}
dependencies {
classpath("$boot:spring-boot-gradle-plugin:$spring")
}
}
allprojects {
group = "com.sp.fc"
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)
gradle 셋팅이 정상적으로 됐다면 아래와 같이 빌드되어 디렉토리가 생성됩니다.
server -> basic-test -> build.gradle 에서 클래스파일 셋팅
dependencies {
implementation("$boot:spring-boot-starter-web")
compile project(":comp-common-utils")
}
comp -> common-utils -> src -> java -> com -> sp -> fc -> Person.java 생성 및 샘플 데이터 작성
package com.sp.fc;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Person {
private String name;
}
basic-test -> src -> test -> java -> com -> sp -> fc -> Test1.java 생성 및 테스트 작성
package com.sp.fc;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class Test1 {
@DisplayName("1. 테스트")
@Test
void test_1() {
assertEquals("test", "test");
}
}
메인메서드로 검증
package com.sp.fc;
import ch.qos.logback.core.net.SyslogOutputStream;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class BasicTestApplication {
public static void main(String[] args) {
// 공용 프로젝트 : comp-common-utils
// 서버 프로젝트 : server-basiec-test
// 분리된 server-basiec-test -> build.gradle 에서 compile project(":comp-common-utils") 선언
Person person = Person.builder().name("test").build();
System.out.println(person);
// SpringApplication.run(BasicTestApplication.class, args);
}
}
참고사이트 : 패스트 캠퍼스
'SPRING > 개발 TIP' 카테고리의 다른 글
[SPRING] @Builder와 @NoArgsConstructor 함께 사용하기 (0) | 2021.03.28 |
---|---|
[SPRING] Spring Security (2) 기본 권한 설정 (0) | 2021.03.03 |
[SPRING] JPA Querydsl Repository Support 활용 (0) | 2021.02.27 |
[Spring] Intelli J에서 JUnit 생성하기 (0) | 2021.02.26 |
[SPRING] Error creating bean with name entityManagerFactory 해결 (0) | 2021.02.26 |