时区 弹簧靴 雄猫 8 AS.



在Tomcat 8上运行的spring启动应用程序上,我将以下代码放入SpringBootServletInitializer中:

public class MyApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(MyApplication.class);
}
@PostConstruct
public void init() {
    // Setting Spring Boot SetTimeZone
    TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
public static void main(String[] args) {
    SpringApplication.run(MyApplication.class, args);
} }

在我的 tomcat 应用程序服务器上,我有一些使用 spring 框架编写的战争,问题是我的 tomcat 中的所有应用程序都根据我的应用程序更改了时区,这是错误的。

如何仅为我的应用程序设置时区,而不影响其他应用程序进入 tomcat 的时区?

谢谢

运行 Tomcat 服务器的 JVM 只有一个缺省时区。更改该默认值会立即影响在该 JVM 中运行的所有应用程序的所有线程中的所有代码。因此,打电话给TimeZone.setDefault几乎从来都不是正确的做法。

了解现代的java.time类,这些类在几年前取代了糟糕的传统日期时间类。具体来说,使用 ZoneId & ZoneOffset 而不是 TimeZone 。对于 UTC,请使用常量ZoneOffset.UTC

了解 Servlet 上下文

侦听器在 Servlet 上下文的"属性"存储区中将对象设置为键值对。您可以将所需的ZoneId对象存储在那里。或者也许春天有一些方法可以帮助解决这个问题。(我不使用Spring。

有关更多信息,请参阅我对这个类似问题的回答。

相关内容

  • 没有找到相关文章

最新更新