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
반응형
'IT > 자바, 스프링' 카테고리의 다른 글
jpa pageRequest로 데이터 가져왔을때 Index out of bounds for length 에러 (0) | 2022.05.09 |
---|---|
java.lang.ClassCastException (0) | 2022.03.24 |
Access-Control-Allow-Origin 여러 도메인을 허가해 줄 수 없을까? (0) | 2022.02.22 |
자바 for문 돌리는 중 ConcurrentModificationException 에러 (0) | 2022.01.13 |
자바 코드에서 오라클 oci 인스턴스 생성하기 (0) | 2022.01.13 |