IT/자바, 스프링

maria db timezone 한국시간으로 맞추기

thesse 2022. 3. 17. 11:29
300x250
반응형

application.yml

spring:
  datasource:
    url: jdbc:mariadb://(ip):(port)/(dbname)?serverTimezone=Asia/Seoul&useLegacyDatetimeCode=false
    ...

 

db url 뒤에 ?serverTimezone=UCT로 하면 기본시간대로 지정된다.

한국 시간대로 지정하고 싶으면 KST가 아닌 Asila/Seoul을 지정하면 된다.

 


 

이렇게 했을 때 문제는

jvm 시간이 UTC로 지정되어있으면 db값에서 자체적으로 -9시간을 해서 보여준다.

즉 db에 17일 00시로 되어있는 데이터를 스프링에서 불러올때 16일 15시로 가져오는 것이다;;

 

따라서 jvm 타임존을 설정해주는 게 가장 안전한 것으로 보인다.

 

@SpringBootApplication
public class myApplication {

    @PostConstruct
    public void started(){
        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
    }

    public static void main(String[] args) {
        SpringApplication.run(myApplication.class, args);
    }
}

 

위와 같이 @PostConstruct 어노테이션을 달고 (Bean 초기화 후 한번 호출됨) 타임존 설정을 Asia/Seoul로 하면 된다.

이때 application.yml에서 useLegacyDatetimeCode=false 옵션은 남겨두어야 한다고 함.

300x250
반응형