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을 자동설정할 수 있다!!!
'개발하자 > 🍃 SpringBoot' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 05. 연관관계 매핑 기초 (0) | 2022.10.09 |
---|---|
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 03. 영속성 관리 (0) | 2022.09.18 |
[자바 ORM 표준 JPA 프로그래밍 - 기본편] 02. JPA 시작 (0) | 2022.09.10 |
[ZEJE] 스프링부트 No serializer found for class ~ and no properties discovered to create BeanSerializer 에러 해결 (0) | 2022.09.04 |