ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring Boot2] 스프링 부트2로 애플리케이션 개발: 환경설정
    [IT] 공부하는 개발자/JAVA 2020. 7. 11. 12:29

    목차


     

    인프라 셋업

    JDK 14 설치 (By Homebrew)

    $ brew update
    $ brew tap adoptopenjdk/openjdk
    $ brew cask install adoptopenjdk14
    
    $ java -version

    home brew 사용자는 위와 같이 JDK14 를 설치한다.

    oracleJdk는 오라클에서 직접 다운로드로 설치만 가능하다. https://www.oracle.com/java/technologies/javase-downloads.html


     

    IDE 설치 (IntelliJ)

    JetBrain 사의 IntelliJ를 추천한다. Spirng Boot와 IntelliJ는 궁합이 좋다.

    나는 이 포스팅을 작성하며 ULTIMATE 2020.1.3 버전으로 업그레이드 했다.

     

     


     

    MySql 설치 & 권한 부여 (mac)

    brew로 버전 명시 없이 mysql을 설치하면 8.xx 버전이 설치된다. 

    $ brew install mysql
    $ brew services start mysql
    
    $ mysql -uroot -p -hlocalhost -P3306

    mysql 에 root 권한으로 접속한 후 데이터베이스를 만들고, dba 유저를 만들어 권한을 부여해주었다.

    -- Database
    create database king;
    
    -- User
    create user 'dba'@'localhost' identified by 'king@';
    grant all privileges on king.* to 'dba'@'localhost';

     

    그리고 workbench 가 있으면 편하므로 없다면 같이 설치해준다.

    $ brew cask install mysqlworkbench

     

    POSTMAN 설치

    $ brew cask install postman

    필수는 아니지만, API 테스트 할 때 무척 유용한 툴이다.


     

     

    프로젝트 셋업

    https://start.spring.io/

    스프링 io에 들어간 후, 아래 창에서 원하는 대로 옵션을 선택한다. 

    빌드 속도가 더 빠르고 버전 커스텀이 가능한 Gradle 을 선택해주었고 언어로는 Java, 버전은 가장 최신 버전인 14를 선택해주었다.

    웹 애플리케이션을 개발할 것이므로 패키징은 War로 선택한다.

     

     

    GENERATE 를 클릭하여 압축파일이 다운로드 된다.

     

    사용하는 IDE툴, 여기에서는 인텔리제이를 열어준다. Open 클릭.

    다운받은 폴더 안의 build.gradle 파일을 선택하여 오픈하면 아래와 같이 물어보는 창이 뜨는데, Open as Project 를 선택한다.

     

     

    그리고 프로젝트 최상단의 build.gradle 을 열어, 아래와 같이 디펜던시를 추가했다.

    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
        implementation 'org.springframework.boot:spring-boot-starter-groovy-templates'
        implementation 'org.springframework.boot:spring-boot-starter-web'
        compile 'mysql:mysql-connector-java'
        compile 'com.google.guava:guava:29.0-jre'
        compile 'org.springframework.boot:spring-boot-starter-thymeleaf'
        compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind'
        compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.10'
        compile group: 'org.apache.commons', name: 'commons-collections4', version: '4.4'
        compileOnly 'org.projectlombok:lombok'
        developmentOnly 'org.springframework.boot:spring-boot-devtools'
        annotationProcessor 'org.projectlombok:lombok'
        testImplementation('org.springframework.boot:spring-boot-starter-test') {
            exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
        }
        testCompile 'org.spockframework:spock-core:1.2-groovy-2.5'
        testCompile 'org.spockframework:spock-spring:1.2-groovy-2.5'
    }

     

     

    그리고 내 프로젝트에 필요한 디펜던시들을 추가해준다.

     

    'mysql:mysql-connector-java' > MySql DB 에 Access 하기 위하여 필요한 디펜던시
    compile 'org.springframework.boot:spring-boot-starter-thymeleaf' > 템플릿 엔진으로 thymeleaf 를 사용한다

    compile 'com.google.guava:guava' > Preconditions 을 통해 로직 Validation 을 간단하게 처리하도록 해주는 Google API

    'org.projectlombok:lombok' > Lombok 애노테이션은 각종 config 설정을 무척 편리하게 도와준다
    annotationProcessor 'org.projectlombok:lombok' > Lombok AnnocationProcessor

    common-lang3, commons-collection4 > NPE 를 피하면서 String의 value 비교, Collection empty 여부 등을 간단히 할 수 있는 라이브러리

    fasterxml.jackson.core > Json 파일을 편리하게 가공할 수 있다.

     

    그리고 설정 - Build, Execution, Deployment - Compliler - Annotation Processors 에서 Enable annotation processing 을 활성화시켜준다.

     

     

    그리고 src - main - resources 에서 application.properties 파일을 열어 아래와 같이 DB Access 정보를 넣어준다.

     

    # server port
    server.address=localhost
    server.port=8080
    
    # mysql
    spring.jpa.show-sql=true
    spring.jpa.database=mysql
    spring.datasource.url=jdbc:mysql://localhost:3306/king?useSSL=false&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useUnicode=true&serverTimezone=UTC
    spring.datasource.username=dba
    spring.datasource.password=king@
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    

    show-sql = true 로 해두면, db에 실행되는 sql 쿼리가 콘솔에 찍히기 때문에 편리한 디버깅을 할 수 있다.
    datasource.url 에 붙은 useSSL, allowPublicKeyRetrieval 등의 옵션은 mysql 버전 8이상을 사용하고 있기 때문에 필요한 옵션들이다.

    접속 포트, 데이터베이스명, 접속 유저 ID &PW 정보 등을 properties 파일에 넣어준다.

    참고로 properties 파일은 공백도 문자로 인식하므로, 공백을 넣지 않도록 주의한다.

     

     

     

    이제 구동을 위해 메인 Application.class 를 열어보자.

     

    클래스 상단에 @SpringBootApplication 애노테이션이 붙어 있는데,이 클래스가 앞으로 개발하면서 모든 패키지의 최상위에 있어야 하는 메인 클래스라는 뜻이다. 그래야 스프링부트가 자원낭비 없이 다른 컴포넌트를 스캔하지 않고 바로 애플리케이션을 구동할 수 있다.

     

     

    RUN 버튼을 클릭해 애플리케이션을 구동시켜보자.

    참고로 스프링 부트는 톰캣이 내장되어 있어서 내가 톰캣 셋업을 하지 않아도 자동으로 톰캣을 구동시킨다. 로그에서 Apache Tomcat/9.0.36 이 구동된 것을 볼 수 있다.

     

    애플리케이션이 잘 돌고 있다.

    브라우저로 localhost:8080 에 접속하면 아래 같은 에러 페이지가 나온다.

    "/" 에 맵핑이 되어있지 않기 때문에 그렇다.

     

    여기까지 기본 셋업이 끝났다.

    댓글

Copyright in 2020 (And Beyond)