젝트 버전업

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 시리즈는 4쇄를 기준으로 실습을 진행했다.
책이 2019년 11월에 나왔지만, 사용되는 라이브러리나 도구가 워낙 업데이트가 빨라서 2020년 12월에 최신 버전으로 업데이트하는 법을 블로그에 업로드 해주셨다.
그래서 이 글을 작성하고 있는 지금(2021년 2월)도 도구들이 더 업데이트 되었을지도 모르지만, 블로그 글을 기준으로 버전업을 해보려고 한다.

프로젝트를 최신으로 변경하는 방법은 블로그에 자세하게 설명되어 있고, 내가 변경한 부분만 간단하게 작성하려고 한다.

gradle 버전 변경하기

  • 4.10.2에서 6.7.1로 변경
    gradlew wrapper --gradle-version 6.7.1

  • build.gradle도 gradle6에 맞게 변경

plugins {
    id 'org.springframework.boot' version '2.4.1'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
}

group 'com.book'
version '1.0.1-SNAPSHOT'+ new Date().format("yyyyMMddHHmmss")
sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

test {
    useJUnitPlatform()
}


dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web')
    implementation('org.springframework.boot:spring-boot-starter-mustache')

    // lombok
    implementation('org.projectlombok:lombok')
    annotationProcessor('org.projectlombok:lombok')
    testImplementation('org.projectlombok:lombok')
    testAnnotationProcessor('org.projectlombok:lombok')

    implementation('org.springframework.boot:spring-boot-starter-data-jpa')
    implementation("org.mariadb.jdbc:mariadb-java-client")
    implementation('com.h2database:h2')

    implementation('org.springframework.boot:spring-boot-starter-oauth2-client') // 권한 관련
    implementation('org.springframework.session:spring-session-jdbc') // 권한 관련

    testImplementation('org.springframework.boot:spring-boot-starter-test')
    testImplementation("org.springframework.security:spring-security-test") // 권한 관련
}
  • 수정 후 gradle test를 하면 junit 에러발생

junit 코드 수정

  • ctrl + shift + r 단축키로 전체 코드 replace

@Test

@RunWith : 패키지 위치, 어노테이션 두개 다 변경되어서 모두 수정

SpringRunner : 패키지 위치, 어노테이션 두개 다 변경되어서 모두 수정

@After : 패키지 위치, 어노테이션 두개 다 변경되어서 모두 수정

@Before : 패키지 위치, 어노테이션 두개 다 변경되어서 모두 수정

  • 모두 수정하고 테스트를 하면 다음과 같은 에러가 발생한다.

JPA

Spring Boot 2.1.10 부터 MySQL 문법 지정 방식에 변화가 있었기 때문에 DB 설정들의 변경이 필요하다.

src > main > resources > application.properties

spring.jpa.show_sql=true
spring.h2.console.enabled=true
spring.profiles.include=real,oauth
spring.session.store-type=jdbc
server.port=8080
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
spring.jpa.properties.hibernate.dialect.storage_engine=innodb
spring.datasource.hikari.jdbc-url=jdbc:h2:mem:testdb;MODE=MYSQL
spring.datasource.hikari.username=sa

src > test > resources > application.properties

spring.jpa.show_sql=true
spring.h2.console.enabled=true
spring.session.store-type=jdbc
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
spring.jpa.properties.hibernate.dialect.storage_engine=innodb
spring.datasource.hikari.jdbc-url=jdbc:h2:mem:testdb;MODE=MYSQL
spring.datasource.hikari.username=sa
  • 수정 후 h2 console 접속되는지 확인하기

src > main > resources > application-real-db.properties

spring.jpa.hibernate.ddl-auto=none
spring.jpa.show_sql=false
spring.datasource.hikari.jdbc-url=jdbc:mariadb://rds주소:포트명(기본은 3306)/database명
spring.datasource.hikari.username=db계정
spring.datasource.hikari.password=db계정 비밀번호
spring.datasource.hikari.driver-class-name=org.mariadb.jdbc.Driver

spring.profiles.include

application.properties 코드 추가

spring.profiles.group.local-real=local-real, oauth
spring.profiles.group.real=real, real-db, oauth
spring.profiles.group.real1=real1, real-db, oauth
spring.profiles.group.real2=real2, real-db, oauth

좋은 웹페이지 즐겨찾기