当jdk1.8+springboot遇上时间差12小时

在使用SpringBoot和JDK1.8开发的应用部署至CentOS7时,遇到newDate生成时间比系统时间慢12小时的问题。通过排查,确认为应用程序时区设置错误,并在启动类中使用@PostConstruct注解设置默认时区为Asia/Shanghai,成功修正时间差。
  • 1、背景:最近工作过程中发现了一个奇怪的现象,使用jdk1.8+springboot开发的jar,当部署到centos7上时,new date生成的时间会比系统时间慢了12小时,写入到mysql数据库也显示比系统时间慢12小时

  • 2、问题排查:因为数据源里配置了serverTimezone=GMT+8,因此mysql不背锅,而且即便是时区问题也应是差8而不是差12小时(捂脸)

  • 3、引用网上大佬的经验:

    在只剩下最艰难的一条道路可走时,我们意外的发现了一个好消息,应用在linux上的日志时间也是错误的,这个无疑给我们确定了,问题就是应用程序出的,而且可以知道应该就是时区出了问题,一般这种情况都是修改下jre lib下得时区,可是1.8版本中我并没有找到对应得文件夹,还有方法是修改tomcat得catalina配置文件,可是我用的是springboot,通过一通百度,最终发现了一个比较好使用的方法,在springboot 的启动类中添加这么一个方法,至此,测试系统时间修改成功

    //方法名随意,主要是@PostConstruct注解修饰,还在项目启动类加载后执行该方法
    @PostConstruct
    void setDefaultTimezone(){
        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
    }
    
JDK1.8、Maven和Spring Boot组合环境下,有以下开发指南和问题解决方案: ### 开发指南 #### 项目创建 - **使用Spring Initializr网站**:访问Spring Initializr,进行如下配置:Project选择Maven,Language选择Java,Spring Boot选择2.7.x(兼容JDK 1.8),设置Group(如com.example)、Artifact(如kafka - demo),Packaging选择Jar,Java版本选择8。添加Spring for Apache Kafka、Spring Web、Spring Boot DevTools(可选,用于开发时自动重启)等依赖,点击“Generate”下载项目压缩包,解压并用IDE导入项目 [^3]。 - **使用IDE创建**:不同的IDE创建Spring Boot项目的方式有所不同,但一般都可以通过IDE自带的项目创建向导,选择Spring Boot项目模板,按照提示完成项目创建。 #### Maven与JDK适配 Maven需要和SDK对齐,刚安装Maven并配置时,有配置默认JDK版本,配置文件路径为apache - maven - 3.8.8\conf\settings.xml。若要让Maven和当前的JDK适配,有两种方法:一是直接修改这个默认版本;二是在项目的pom文件添加配置插件,示例如下: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <!-- 在这里写jdk版本 --> <source>1.8</source> <target>1.8</target> <encoding>utf-8</encoding> </configuration> </plugin> </plugins> </build> ``` #### 框架整合 - **Spring Boot整合Kafka**:可按照上述使用Spring Initializr网站创建项目的方式,添加Spring for Apache Kafka依赖,后续根据Kafka的使用场景进行配置和开发 [^3]。 - **Spring Boot整合MyBatis + MySQL**:有完整覆盖Spring Boot 2.x + MyBatis整合流程的指南,提供可直接运行的测试代码,包含常见问题解决方案,遵循Java 1.8语法规范,使用现代测试框架(JUnit 5 + Spring Boot Test) [^4]。 ### 问题解决方案 #### Maven与JDK版本不匹配问题 若出现Maven编译时使用的JDK版本与项目预期的JDK 1.8不一致的问题,可按照上述Maven与JDK适配的两种方法进行解决,即修改默认版本或在pom文件添加配置插件 [^1]。 #### Spring Boot升级问题 如果有将Spring Boot 2.0升级至3.5以及JDK 1.8升级至17的需求,需考虑Spring Boot 2.0到3.5的重大更新(如Jakarta EE 9+包路径变更、GraalVM支持等)以及JDK 1.817的语言特性升级(如sealed class、record等),同时满足安全性与性能优化需求 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值