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

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

 

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