Logs

[Spring boot] MySQL DB 프로젝트에 연동하기 (with AWS RDS, gradle, maven, yml, properties)

랩실외톨이 2023. 6. 30. 03:42
반응형

https://coding-log.tistory.com/252

 

AWS에서 프리티어로 DB 서버 구축하기 (with MySQL, RDS) + MySQL Workbench에서 접속하기

AWS에 학생 계정이라는 것이 있었다. 흔히 인터넷에서 학생계정으로 무료로 쓰고 있었는데 뭐가 초과돼서 과금됐다고 돈 내라고 연락 왔어ㅠㅠ 라는 도시괴담의 주인공일 것이다. 그런데 그 학

coding-log.tistory.com

 

우여곡절 끝에 서버 구축이 끝났다. (서버 구축하는 법이 궁금하다면 위의 글 참조)

 

이번에는 Spring boot 프로젝트에 구축한 서버 DB를 연결해 보자.

 

우선 프로젝트 설정부터 바꿔야 한다. 보통 application.properties 혹은 application.yml 파일에 프로젝트 설정을 적는다.

 

이에 앞서 우리는 해야 할 것이 있다.

바로 .gitignore 파일에 설정 파일의 이름을 넣는 것이다.

둘 중 본인의 파일을 넣으면 된다.

이렇게 하는 이유는 git에 엔드포인트와 포트번호, 유저이름, 마스터 암호 등 개인정보를 올리면 보안적으로 위험하기 때문이다. 

 

이제 설정 파일을 작성해 보자.

 

 

 

application.yml

 

spring:
  datasource:
    url: jdbc:mysql://엔드포인트:포트번호/db스키마이름?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    username: 유저이름
    password: 마스터암호
    driver-class-name: com.mysql.cj.jdbc.Driver

 

application.properties

 

spring.datasource.url=jdbc:mysql://엔드포인트:포트번호/db스키마이름?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
spring.datasource.username=유저이름
spring.datasource.password=마스터암호
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

 

properties와 yml 파일은 외부 설정파일로 같은 역할을 수행하지만 보다시피 차이가 있다.

yml은 계층구조로 들여 쓰기를 통해 파일을 만들기 때문에 가독성이 좋고, 간결하다는 장점이 있다.

properties는 간단하고 직관적이라 단일 설정이나 간단한 값을 표현하는데 좋다는 장점이 있다.

 

이제 의존성을 넣어주자.

 

 

 

 

build.gradle (gradle ver)

 

dependencies {
	runtimeOnly 'com.mysql:mysql-connector-j'
}

 

pom.xml (maven ver)

 

<dependencies>
  
  <dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>버전</version>
    <scope>runtime</scope>
  </dependency>
  
</dependencies>

 

의존성을 넣는 방법도 maven, gradle 두 가지 버전이 있는데,

maven은 xml 기반이라 이해하기가 쉽고, 더 오래 사용되어 왔다는 장점이 있고

gradle은 유연하고 성능이 좋다는 장점이 있다.

 

 

 

 

 

 

성공!

 

설정을 마치고 돌렸을 때 아무런 에러가 나지 않았다면 성공이다.

 

나는 많은 에러가 났었는데 하나는 url에 오타가 나서 그랬고

https://coding-log.tistory.com/255

 

[Error] java.sql.SQLNonTransientConnectionException: Cannot load connection class because of underlying exception: com.mysql.cj.

아주 간단한 문제에 에러가 세 가지 발생했다. 1. java.sql.SQLNonTransientConnectionException: Cannot load connection class because of underlying exception 2. Caused by: com.mysql.cj.exceptions.UnableToConnectException: Cannot load connectio

coding-log.tistory.com

 

다른 이유는 swagger 설정 때문이었다.

https://coding-log.tistory.com/256

 

[Error] org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException Swagger 관련 에러이다. Spring boot 2.6 버전 이후에 설정값이 spring.mvc.pathm

coding-log.tistory.com

 

 

 

+ DB 서버 시간, 한국어 관련 설정을 하고 싶다면 아래의 블로그를 참조하세요! (저도 잘 봤습니다 ㅎㅎ)

 

https://velog.io/@u-nij/Spring-Boot-AWS-RDS-MySQL-연동하기

 

Spring Boot + AWS RDS (MySQL) 연동하기

Spring Boot + AWS RDS를 연동하고, 시간 및 언어 설정을 하는 과정입니다.

velog.io

 

 

반응형