본문 바로가기
개발하자/🍃 SpringBoot

[SpringBoot] ec2에 배포했을 때 Timezone 한국 시간으로 설정하기

by 밈밈무 2022. 8. 6.

LocalDateTime.now()를 사용해서 글 올린 시간 등을 계산해야 하는 로직을 짜던 중 시간이 한국 시간보다 -9시간 되어 측정되는 현상을 발견했다.

이를 해결하기 위해 여러 방법을 시도 해보았는데

1. atZone으로 설정하기

LocalDateTime.now().atZone(ZoneId.of("Asia/Seoul")).toLocalDateTime();

먼저 자바 코드를 위와 같이 변경했다. 위와 같이만 변경하면 localhost 상에서는 제대로 동작하는데 ec2 서버에 올리면 원래 문제대로 -9시간으로 나오는 현상을 발견했다.

 

2. EC2 서버 시간 변경하기

ec2 인스턴스의 서버 시간을 변경해보고 reboot도 했지만 이것도 안됐다!

3. Bean으로 TimeZone 자동 설정

이 방법으로 해결했다!

@SpringBootApplication
public class SteadyBackApplication {

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

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

}

Application 코드에 어플리케이션 실행 시 TimeZone을 설정해줄 수 있도록 설정해준다.

@PostConstruct 는 Bean이 초기화된 후에 단 한번만 호출되는 메소드로 위와 같이 코드를 입력해주면 빈 생명주기를 통해 TimeZone을 자동설정할 수 있다!!!