Spring

SpringBoot Mysql Datasource 세팅

일태우 2020. 11. 16. 21:55

SpringBoot에서 Mysql Datasource 세팅하기.

 

필자는 JPA, Gradle로 진행했다.(Mybatis같은 환경도 아래 세팅으로 사용가능 할 듯)

 

Gradle.build

dependencies {
...
implementation ("mysql:mysql-connector-java")
implementation "org.springframework.boot:spring-boot-starter-data-jpa"
...
}

 

JPA 사용시에만 JPA 의존을 추가하자

 

DatabaseConfig.java

@Slf4j
@EnableJpaAuditing
@Configuration
public class DatabaseConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
//return NoOpPasswordEncoder.getInstance();
}
// public DataSource dataSource() {
// log.info("dataSource setup...");
// EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
// EmbeddedDatabase db = builder
// .setType(EmbeddedDatabaseType.H2)
// .build();
// return db;
// }
@Bean
public DataSource dataSource() {
log.info("dataSource setup...");
DataSource dataSource = DataSourceBuilder.create()
.url("jdbc:mysql://DB_HOST_IP:PORT/DB명?useUnicode=yes&characterEncoding=UTF-8")
.username(ID)
.password(PASSWORD)
.build();
return dataSource;
}
...
}

기존에 사용하던 embeded datasource를 비활성화하고 datasource 정보를 작성해준다.

url과 username, password은 각자의 환경에 맞게 설정한다.

?useUnicode=yes&characterEncoding=UTF-8 부분은 mysql utf-8설정에 대응하기 위한 설정

 

The server time zone value xxxx is unrecognized or represents more than one time zone 등과 같은 에러가 나오는 분은 lteawoo.tistory.com/32

 

Mysql Server Timezone 설정방법

Mysql Server Timezone 설정 방법 필자는 Mysql 5.7로 진행하였다.(5.7 이하의 버전이나 이후의 버전도 레퍼런스 확인 결과 비슷함) 아래의 명령어로 현재 타임존 확인가능 SELECT @@GLOBAL.time_zone, @@SESSION...

lteawoo.tistory.com

위의 글 참고하여 세팅하고 해결하자. 시스템시간을 인식 못하여서 발생하는 것.

 

위의 세팅까지 마쳤으면 테스트해보면 동작하는 것을 볼 수 있다.