[Spring] Spring Security(1)

99winnmin·2022년 7월 22일
0

Spring

목록 보기
14/17

필요한 지식(앞으로 계속 다시볼 내용...ㅎㅎㅎ)

  • 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

settings.gradle에서는 전체 프로젝트의 구조를 빌드하게된다.
보통 한개의 프로젝트를 구성하지만, 여러 모듈 프로젝트들을 포함하게 되는 경우가 있는데 해당 강의에서는 여러 모듈 프로젝트를 사용하기 때문에 group으로 관리하기 위해 다음과 같은 자동 빌드 스크립트를 사용한다.

  • comp : 공용이 되는 하위 프로젝트에서 component가 될만한 것들은 comp에서 프로젝트를 구성
  • server : server instance로 구성, spring security 서비스들을 만들어서 테스트
  • web : web controller로 구성
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

루트 디렉터리의 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.

profile
功在不舍

0개의 댓글