programing

스프링 부트 JVM을 UTC 시간대로 강제 설정하려면 어떻게 해야 하나요?

goodsources 2023. 3. 22. 21:08
반응형

스프링 부트 JVM을 UTC 시간대로 강제 설정하려면 어떻게 해야 하나요?

Force Java 시간대를 GMT/UTC로 표시했습니다.

나는 노력했다.

  • mvn spring-boot: -Dexec.args="Duser.timezone=GMT"를 실행합니다.
  • mvn spring-boot: -Dexec.args=-Duser.timezone=을 실행합니다.UTC"
  • user.timezone=UTCconfig/application.properties
  • user.timezone=GMT
  • pom.xml:

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <properties>
                  <spring-boot.run.jvmArguments>-Duser.timezone=UTC</spring-boot.run.jvmArguments>
                </properties>
            </configuration>
        </plugin>
    
  • mvn spring-boot: 실행 -Dspring-boot.run.jvmArguments="Duser.timezone="UTC"

하지만 그것은 인쇄된다.

System.out.println(TimeZone.getDefault());

sun.2014.2014.2014.2014.2014.2011ZoneInfo[id="America/New_York", offset=-18000000, dstSavings=3600000, useDaylight=true, transitions=235, lastRule=sec.util.SimpleTimeZone [id=America/New_York, offset=-18000000, dstSavings=3600000, useDaylight=true, startYear=0, startMonth=2, startDay=8, startDayOfWeek=1,13,000, StartTime=0, End,

스프링 부트 1.5.19, Java 8

어플리케이션 레벨에서 어플리케이션의 타임존을 설정할 수 있다고 생각합니다.이 링크가 도움이 될 것 같아요.https://www.onlinetutorialspoint.com/spring-boot/how-to-set-spring-boot-settimezone.html

따라서 "@SpringBootApplication" 주석이 있는 메인 클래스에 "@PostConstruct" 주석을 추가하고 여기에 시간대 설정 메서드를 추가해야 합니다.여기 예가 있습니다.

@SpringBootApplication
public class HellotimezoneApplication {

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

    @PostConstruct
    public void init(){
      // Setting Spring Boot SetTimeZone
      TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
    }

}

도움이 되길 바랍니다!

Maven Spring Boot Plugin에서 Forked Spring Boot 애플리케이션으로 JVM 옵션을 전달하려면 속성을 사용합니다.

<properties>
  <spring-boot.run.jvmArguments>-Duser.timezone=UTC</spring-boot.run.jvmArguments>
</properties>

이는 명령줄 구문과 동일합니다.

mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Duser.timezone=UTC"

또는 완전 패키지화된 Spring Boot 응용 프로그램을 실행하는 경우:

java -Duser.timezone=UTC -jar app.jar

타임 존을 설정하려면 , 다음의 순서에 따라 주석을 달 수 있습니다.@Configuration주석입니다.프로젝트 내 어디에나 넣을 수 있습니다.저는 보통 이 카테고리에 해당하는 모든 클래스를 패키지 형식으로 수용합니다.config. 반드시 추가해 주세요.@PostConstruct시간대를 실제로 설정하고 있는 메서드에 대한 주석입니다.

import org.springframework.context.annotation.Configuration;

import javax.annotation.PostConstruct;

@Configuration
public class LocaleConfig {

    @PostConstruct
    public void init() {

        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

        System.out.println("Date in UTC: " + new Date().toString());
    }
}

원문 참조

응용 프로그램이 Linux에서 실행되는 경우 추가 옵션:

세트TZ환경 변수

POSIX 시스템에서는 사용자가 TZ 환경변수를 사용하여 시간대를 지정할 수 있습니다(https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html)를 참조하십시오.

이 옵션은 모든 클라우드 환경에서 특히 유용합니다.

(심볼링크)/etc/locatime

로컬 내 , 컬 i 。/etc/locatime의 심볼 /usr/share/zoneinfo/Europe/Berlin:

➜ ls -l /etc/localtime  
lrwxrwxrwx 1 root root 33 22. Jan 23:01 /etc/localtime -> /usr/share/zoneinfo/Europe/Berlin

는 쉽게 수 요.ln -s /usr/share/zoneinfo/GMT /etc/localtime 한 값은 에./usr/share/zoneinfo/.

이 옵션은 호스트 볼륨을 마운트하여 많은 클라우드 환경에서 사용할 수도 있습니다. 명령 및 인수가 포함된 POD의 kubernetes 시간대를 참조하십시오.

포스트 컨스트럭트가 작동하지 않는 경우가 있어 프리 컨스트럭트가 기능하는 경우가 있다.

@EnableSwagger2
@SpringBootApplication(scanBasePackages = { "com.app" })
public class Application {
    
    public static void main(String[] args) {
        System.out.println("Setting the timezone"+TimeZone.getTimeZone("GMT+9:00").getID());
        TimeZone.setDefault(TimeZone.getTimeZone("GMT+9:00"));
        SpringApplication.run(Application.class, args);
    }

    
}

유닛 테스트를 실행할 때 intellij에서 이 기능은 매우 효과적입니다.junit 또는 maven config의 vm 인수 GMT에 bellow 명령어를 추가해야 합니다(UTC가 왜 작동하지 않는지 모르겠습니다.이것이 도움이 되기를 바랍니다^^).

    -Duser.timezone="GMT+2"

<properties> <spring-boot.run.jvmArguments>-Duser.timezone=UTC</spring-boot.run.jvmArguments> </properties> 그것은 나에게 효과가 없었다.

대신 jvmArguments를 사용하면 효과가 있습니다.참고 자료: https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/html/...

말하면 <configuration> <jvmArguments>-Duser.timezone=UTC</jvmArguments> </configuration>

언급URL : https://stackoverflow.com/questions/54316667/how-do-i-force-a-spring-boot-jvm-into-utc-time-zone

반응형