From 1856fcee91f8ddf1ad24f8287e9fad578963bdc3 Mon Sep 17 00:00:00 2001 From: DongZeLiang <2746733890@qq.com> Date: Wed, 11 Sep 2024 10:40:52 +0800 Subject: [PATCH] =?UTF-8?q?feat():=20=E5=9F=BA=E7=A1=80=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/vehicleSimulationDataBaseFile.mv.db | Bin 274432 -> 0 bytes db/vehicleSimulationDataBaseFile.trace.db | 1515 ----------------- pom.xml | 37 +- .../system/context/SystemUserContext.java | 29 + .../com/muyu/system/domain/LoginUserInfo.java | 41 + .../com/muyu/system/handle/SystemHandler.java | 53 + .../properties/ServerConfigProperties.java | 75 + .../com/muyu/vehicle/VehicleInstance.java | 6 +- .../vehicle/api/req/VehicleConnectionReq.java | 2 +- .../com/muyu/vehicle/core/LocalContainer.java | 2 +- .../vehicle/core/VehicleConfiguration.java | 20 +- .../com/muyu/vehicle/model/VehicleData.java | 32 +- .../com/muyu/web/config/ForsetConfig.java | 10 +- .../com/muyu/web/config/LoadServerConfig.java | 31 - .../properties/ServiceConfigProperties.java | 66 - .../web/controller/VehicleController.java | 16 +- .../muyu/web/controller/VerifyController.java | 10 +- .../com/muyu/web/domain/ServerConfig.java | 20 +- .../domain/{Vehicle.java => VehicleInfo.java} | 16 +- .../web/domain/model/ServerConfigModel.java | 7 +- .../web/domain/resp/ServerConfigResp.java | 3 +- ...icleMapper.java => VehicleInfoMapper.java} | 4 +- ...leService.java => VehicleInfoService.java} | 4 +- .../web/service/VehicleInstanceService.java | 6 +- .../service/impl/ServerConfigServiceImpl.java | 13 +- ...eImpl.java => VechileInfoServiceImpl.java} | 40 +- .../impl/VehicleInstanceServiceImpl.java | 12 +- src/main/resources/application.yml | 24 +- 28 files changed, 337 insertions(+), 1757 deletions(-) delete mode 100644 db/vehicleSimulationDataBaseFile.mv.db delete mode 100644 db/vehicleSimulationDataBaseFile.trace.db create mode 100644 src/main/java/com/muyu/system/context/SystemUserContext.java create mode 100644 src/main/java/com/muyu/system/domain/LoginUserInfo.java create mode 100644 src/main/java/com/muyu/system/handle/SystemHandler.java create mode 100644 src/main/java/com/muyu/system/properties/ServerConfigProperties.java delete mode 100644 src/main/java/com/muyu/web/config/LoadServerConfig.java delete mode 100644 src/main/java/com/muyu/web/config/properties/ServiceConfigProperties.java rename src/main/java/com/muyu/web/domain/{Vehicle.java => VehicleInfo.java} (83%) rename src/main/java/com/muyu/web/mapper/{VehicleMapper.java => VehicleInfoMapper.java} (68%) rename src/main/java/com/muyu/web/service/{VehicleService.java => VehicleInfoService.java} (83%) rename src/main/java/com/muyu/web/service/impl/{VechileServiceImpl.java => VechileInfoServiceImpl.java} (73%) diff --git a/db/vehicleSimulationDataBaseFile.mv.db b/db/vehicleSimulationDataBaseFile.mv.db deleted file mode 100644 index ec5f81571ba6ac2de35d3b9751172ba5deda4fb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274432 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

&W|JWHBp3f&{- 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 Y!R)j1YuhtswqW=veH%OSzfV5?AJ;8H4*&oF diff --git a/db/vehicleSimulationDataBaseFile.trace.db b/db/vehicleSimulationDataBaseFile.trace.db deleted file mode 100644 index 5d8338f..0000000 --- a/db/vehicleSimulationDataBaseFile.trace.db +++ /dev/null @@ -1,1515 +0,0 @@ -2024-06-10 20:50:14 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.createStatement(JdbcConnection.java:206) - at com.zaxxer.hikari.pool.ProxyConnection.createStatement(ProxyConnection.java:294) - at com.zaxxer.hikari.pool.HikariProxyConnection.createStatement(HikariProxyConnection.java) - at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:256) - at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.populate(ResourceDatabasePopulator.java:254) - at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:54) - at org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer.runScripts(DataSourceScriptDatabaseInitializer.java:90) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.runScripts(AbstractScriptDatabaseInitializer.java:145) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.applyScripts(AbstractScriptDatabaseInitializer.java:107) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.applySchemaScripts(AbstractScriptDatabaseInitializer.java:97) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.initializeDatabase(AbstractScriptDatabaseInitializer.java:75) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.afterPropertiesSet(AbstractScriptDatabaseInitializer.java:65) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:921) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) - at com.muyu.VehicleSimulationApplication.main(VehicleSimulationApplication.java:18) -2024-06-10 20:50:14 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:60) - at org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer.runScripts(DataSourceScriptDatabaseInitializer.java:90) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.runScripts(AbstractScriptDatabaseInitializer.java:145) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.applyScripts(AbstractScriptDatabaseInitializer.java:107) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.applySchemaScripts(AbstractScriptDatabaseInitializer.java:97) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.initializeDatabase(AbstractScriptDatabaseInitializer.java:75) - at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.afterPropertiesSet(AbstractScriptDatabaseInitializer.java:65) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) - at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:921) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) - at com.muyu.VehicleSimulationApplication.main(VehicleSimulationApplication.java:18) -2024-06-11 15:24:37 jdbc[3]: exception -org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "[*]\feffcreate table if not exists vehicle ( `vin` char (17) primary key not null, `remaining_battery` DOUBLE not null, `total_mileage` DOUBLE not null, `battery_level` DOUBLE not null, `create_time` datetime not null ) "; SQL statement: -create table if not exists vehicle ( `vin` char (17) primary key not null, `remaining_battery` DOUBLE not null, `total_mileage` DOUBLE not null, `battery_level` DOUBLE not null, `create_time` datetime not null ) [42000-214] -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.mybatis.spring.transaction.SpringManagedTransaction.close(SpringManagedTransaction.java:115) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:90) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:449) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:423) - at com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:81) - at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) - at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) - at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) - at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) - at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) - at jdk.internal.reflect.GeneratedMethodAccessor76.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) - at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) - at jdk.proxy2/jdk.proxy2.$Proxy81.update(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:194) - at jdk.internal.reflect.GeneratedMethodAccessor75.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:463) - at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:396) - at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.rollback(SpringManagedTransaction.java:106) - at org.apache.ibatis.executor.BaseExecutor.rollback(BaseExecutor.java:256) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:87) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.mybatis.spring.transaction.SpringManagedTransaction.close(SpringManagedTransaction.java:115) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:90) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getMetaData(JdbcConnection.java:306) - at com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:380) - at com.zaxxer.hikari.pool.HikariProxyConnection.getMetaData(HikariProxyConnection.java) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:340) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:141) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.(SQLErrorCodeSQLExceptionTranslator.java:102) - at org.mybatis.spring.MyBatisExceptionTranslator.lambda$new$0(MyBatisExceptionTranslator.java:55) - at org.mybatis.spring.MyBatisExceptionTranslator.initExceptionTranslator(MyBatisExceptionTranslator.java:106) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:373) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:141) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.(SQLErrorCodeSQLExceptionTranslator.java:102) - at org.mybatis.spring.MyBatisExceptionTranslator.lambda$new$0(MyBatisExceptionTranslator.java:55) - at org.mybatis.spring.MyBatisExceptionTranslator.initExceptionTranslator(MyBatisExceptionTranslator.java:106) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getMetaData(JdbcConnection.java:306) - at com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:380) - at com.zaxxer.hikari.pool.HikariProxyConnection.getMetaData(HikariProxyConnection.java) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:340) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:373) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:423) - at com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:81) - at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) - at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) - at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) - at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) - at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) - at jdk.internal.reflect.GeneratedMethodAccessor76.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) - at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) - at jdk.proxy2/jdk.proxy2.$Proxy81.update(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:194) - at jdk.internal.reflect.GeneratedMethodAccessor75.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:463) - at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:396) - at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.rollback(SpringManagedTransaction.java:106) - at org.apache.ibatis.executor.BaseExecutor.rollback(BaseExecutor.java:256) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:87) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.mybatis.spring.transaction.SpringManagedTransaction.close(SpringManagedTransaction.java:115) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:90) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getMetaData(JdbcConnection.java:306) - at com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:380) - at com.zaxxer.hikari.pool.HikariProxyConnection.getMetaData(HikariProxyConnection.java) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:340) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:373) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:423) - at com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:81) - at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) - at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) - at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) - at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) - at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) - at jdk.internal.reflect.GeneratedMethodAccessor76.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) - at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) - at jdk.proxy2/jdk.proxy2.$Proxy81.update(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:194) - at jdk.internal.reflect.GeneratedMethodAccessor75.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:463) - at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:396) - at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.rollback(SpringManagedTransaction.java:106) - at org.apache.ibatis.executor.BaseExecutor.rollback(BaseExecutor.java:256) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:87) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.mybatis.spring.transaction.SpringManagedTransaction.close(SpringManagedTransaction.java:115) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:90) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getMetaData(JdbcConnection.java:306) - at com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:380) - at com.zaxxer.hikari.pool.HikariProxyConnection.getMetaData(HikariProxyConnection.java) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:340) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:373) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getAutoCommit(JdbcConnection.java:423) - at com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:81) - at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67) - at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:337) - at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:86) - at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) - at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) - at jdk.internal.reflect.GeneratedMethodAccessor76.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49) - at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62) - at jdk.proxy2/jdk.proxy2.$Proxy81.update(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:194) - at jdk.internal.reflect.GeneratedMethodAccessor75.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:463) - at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:396) - at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java) - at org.mybatis.spring.transaction.SpringManagedTransaction.rollback(SpringManagedTransaction.java:106) - at org.apache.ibatis.executor.BaseExecutor.rollback(BaseExecutor.java:256) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:87) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.mybatis.spring.transaction.SpringManagedTransaction.close(SpringManagedTransaction.java:115) - at org.apache.ibatis.executor.BaseExecutor.close(BaseExecutor.java:90) - at jdk.internal.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:64) - at jdk.proxy2/jdk.proxy2.$Proxy81.close(Unknown Source) - at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:260) - at org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:195) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:438) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.getMetaData(JdbcConnection.java:306) - at com.zaxxer.hikari.pool.ProxyConnection.getMetaData(ProxyConnection.java:380) - at com.zaxxer.hikari.pool.HikariProxyConnection.getMetaData(HikariProxyConnection.java) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:340) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) -2024-06-12 15:22:19 jdbc[3]: exception -org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database is already closed (to disable automatic closing at VM shutdown, add ";DB_CLOSE_ON_EXIT=FALSE" to the db URL) [90121-214] - at org.h2.message.DbException.getJdbcSQLException(DbException.java:678) - at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) - at org.h2.message.DbException.get(DbException.java:223) - at org.h2.message.DbException.get(DbException.java:199) - at org.h2.message.DbException.get(DbException.java:188) - at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1375) - at org.h2.jdbc.JdbcConnection.clearWarnings(JdbcConnection.java:610) - at com.zaxxer.hikari.pool.ProxyConnection.close(ProxyConnection.java:267) - at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:407) - at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:394) - at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:361) - at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:373) - at org.springframework.jdbc.support.SQLErrorCodesFactory.resolveErrorCodes(SQLErrorCodesFactory.java:235) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.lambda$setDataSource$0(SQLErrorCodeSQLExceptionTranslator.java:140) - at org.springframework.util.function.SingletonSupplier.get(SingletonSupplier.java:97) - at org.springframework.util.function.SupplierUtils.resolve(SupplierUtils.java:40) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.getSqlErrorCodes(SQLErrorCodeSQLExceptionTranslator.java:171) - at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:193) - at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) - at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) - at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) - at jdk.proxy2/jdk.proxy2.$Proxy69.update(Unknown Source) - at org.mybatis.spring.SqlSessionTemplate.update(SqlSessionTemplate.java:288) - at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:64) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) - at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) - at jdk.proxy2/jdk.proxy2.$Proxy74.update(Unknown Source) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:258) - at com.baomidou.mybatisplus.extension.service.IService.update(IService.java:248) - at com.muyu.web.service.impl.VechileServiceImpl.lambda$syncDb$0(VechileServiceImpl.java:104) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at com.muyu.web.service.impl.VechileServiceImpl.syncDb(VechileServiceImpl.java:98) - at com.muyu.web.service.impl.VechileServiceImpl$$FastClassBySpringCGLIB$$b352945.invoke() - at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) - at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386) - at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85) - at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704) - at com.muyu.web.service.impl.VechileServiceImpl$$EnhancerBySpringCGLIB$$c97faf4f.syncDb() - at com.muyu.vehicle.core.VehicleConfiguration.destroy(VehicleConfiguration.java:68) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) - at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.base/java.lang.reflect.Method.invoke(Method.java:568) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeDestroyMethods(InitDestroyAnnotationBeanPostProcessor.java:347) - at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction(InitDestroyAnnotationBeanPostProcessor.java:177) - at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:197) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:587) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:559) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1163) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:520) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1156) - at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1109) - at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174) - at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1024) - at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145) - at java.base/java.lang.Iterable.forEach(Iterable.java:75) - at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114) - at java.base/java.lang.Thread.run(Thread.java:833) diff --git a/pom.xml b/pom.xml index b0bd12d..901723e 100644 --- a/pom.xml +++ b/pom.xml @@ -12,13 +12,14 @@ 17 17 UTF-8 - 3.5.1 + 3.5.7 + 1.5.36 org.springframework.boot spring-boot-starter-parent - 2.7.15 + 3.2.4 @@ -40,7 +41,7 @@ 1.2.5 - + org.projectlombok lombok @@ -49,25 +50,17 @@ com.baomidou - mybatis-plus-boot-starter + mybatis-plus-spring-boot3-starter ${mybatisplus.version} + + - com.baomidou - mybatis-plus-generator - ${mybatisplus.version} - - - org.freemarker - freemarker - - - - - com.h2database - h2 + com.mysql + mysql-connector-j + com.alibaba.fastjson2 fastjson2 @@ -77,14 +70,8 @@ com.dtflys.forest - forest-spring-boot-starter - 1.5.33 - - - - com.alibaba - fastjson - 1.2.73 + forest-spring-boot3-starter + ${forest.version} diff --git a/src/main/java/com/muyu/system/context/SystemUserContext.java b/src/main/java/com/muyu/system/context/SystemUserContext.java new file mode 100644 index 0000000..bb3e7cc --- /dev/null +++ b/src/main/java/com/muyu/system/context/SystemUserContext.java @@ -0,0 +1,29 @@ +package com.muyu.system.context; + +import com.muyu.system.domain.LoginUserInfo; + +/** + * @Description: 系统用户上下文 + * @author: MuYu + * @date: 2024/9/10-下午5:52 + */ +public class SystemUserContext { + + /** + * 系统用户线程变量 + */ + private static final ThreadLocal basicContextLocal = new ThreadLocal<>(); + + + public static LoginUserInfo get() { + return basicContextLocal.get(); + } + + public static void set(LoginUserInfo value) { + basicContextLocal.set(value); + } + + public static void remove() { + basicContextLocal.remove(); + } +} diff --git a/src/main/java/com/muyu/system/domain/LoginUserInfo.java b/src/main/java/com/muyu/system/domain/LoginUserInfo.java new file mode 100644 index 0000000..1f15d04 --- /dev/null +++ b/src/main/java/com/muyu/system/domain/LoginUserInfo.java @@ -0,0 +1,41 @@ +package com.muyu.system.domain; + +import com.muyu.system.properties.ServerConfigProperties; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description: 登陆用户信息 + * @author: MuYu + * @date: 2024/9/11-上午10:15 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class LoginUserInfo { + + /** + * 用户ID + */ + private Long id; + + /** + * 用户名称 + */ + private String userName; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 服务配置 + */ + private ServerConfigProperties serverConfig; + + +} diff --git a/src/main/java/com/muyu/system/handle/SystemHandler.java b/src/main/java/com/muyu/system/handle/SystemHandler.java new file mode 100644 index 0000000..d6bd3f1 --- /dev/null +++ b/src/main/java/com/muyu/system/handle/SystemHandler.java @@ -0,0 +1,53 @@ +package com.muyu.system.handle; + +import com.muyu.system.context.SystemUserContext; +import com.muyu.system.domain.LoginUserInfo; +import com.muyu.system.properties.ServerConfigProperties; + +/** + * @Description: 系统处理器 + * @author: MuYu + * @date: 2024/9/11-上午10:23 + */ +public class SystemHandler { + + /** + * 获取登陆用户信息 + * @return 登陆用户信息 + */ + public static LoginUserInfo getUserInfo(){ + return SystemUserContext.get(); + } + + + /** + * 登陆用户ID + * @return 登录用户ID + */ + public static Long getUserId(){ + return getUserInfo().getId(); + } + + /** + * 获取服务器配置 + * @return 当前用户服务器配置 + */ + public static ServerConfigProperties getServerConfig(){ + return SystemUserContext.get().getServerConfig(); + } + + /** + * 存储当前服务器配置 + */ + public static void setServerConfig(ServerConfigProperties serverConfig){ + SystemUserContext.get().setServerConfig(serverConfig); + } + + /** + * 获取负载地址 + * @return 负载地址 + */ + public static String getLoadReqUrl(){ + return getServerConfig().getLoadReqUrl(); + } +} diff --git a/src/main/java/com/muyu/system/properties/ServerConfigProperties.java b/src/main/java/com/muyu/system/properties/ServerConfigProperties.java new file mode 100644 index 0000000..1ccf014 --- /dev/null +++ b/src/main/java/com/muyu/system/properties/ServerConfigProperties.java @@ -0,0 +1,75 @@ +package com.muyu.system.properties; + +import com.muyu.web.domain.model.ServerConfigModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author: DongZeLiang + * @date: 2024/6/10 + * @Description: 服务器配置类 + * @Version: 1.0 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ServerConfigProperties { + + /** + * 主机地址 + */ + private String host; + /** + * 端口号 + */ + private String port; + /** + * 负载地址 + */ + private String uri; + /** + * 负载请求格式化地址 + */ + private String loadReqUrl; + /** + * 默认MQTT地址 + */ + private String mqttAddr; + /** + * 默认MQTT主题 + */ + private String mqttTopic; + /** + * 默认MQTT交付级别 + */ + private Integer mqttQos; + + /** + * 模型构建配置 + * @param serverConfigModel 配置模型对象 + * @return 配置对象 + */ + public static ServerConfigProperties modelToProperties(ServerConfigModel serverConfigModel) { + + return ServerConfigProperties.builder() + .host(serverConfigModel.getHost()) + .port(serverConfigModel.getPort()) + .uri(serverConfigModel.getUri()) + .mqttAddr(serverConfigModel.getDefaultMqttAddr()) + .mqttTopic(serverConfigModel.getDefaultMqttTopic()) + .mqttQos(serverConfigModel.getDefaultMqttQos()) + .loadReqUrl( + String.format( + "http://%s:%s%s", + serverConfigModel.getHost(), + serverConfigModel.getPort(), + serverConfigModel.getUri().startsWith("/") ? serverConfigModel.getUri() : "/" + serverConfigModel.getUri() + ) + ) + .build(); + } + +} diff --git a/src/main/java/com/muyu/vehicle/VehicleInstance.java b/src/main/java/com/muyu/vehicle/VehicleInstance.java index 3933e8a..d9bfe0c 100644 --- a/src/main/java/com/muyu/vehicle/VehicleInstance.java +++ b/src/main/java/com/muyu/vehicle/VehicleInstance.java @@ -3,7 +3,7 @@ package com.muyu.vehicle; import com.alibaba.fastjson2.JSONObject; import com.muyu.web.common.SystemConstant; import com.muyu.web.common.pool.ScheduledThreadPool; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; import com.muyu.web.domain.model.PositionModel; import com.muyu.web.utils.CalculateCheckDigit; import com.muyu.web.utils.ConversionUtil; @@ -56,7 +56,7 @@ public class VehicleInstance { /** * 车辆 */ - private Vehicle vehicle; + private VehicleInfo vehicleInfo; /** * 实例数据 */ @@ -95,7 +95,7 @@ public class VehicleInstance { * @return VIN */ public String getVin() { - return this.vehicle.getVin(); + return this.vehicleInfo.getVin(); } /** diff --git a/src/main/java/com/muyu/vehicle/api/req/VehicleConnectionReq.java b/src/main/java/com/muyu/vehicle/api/req/VehicleConnectionReq.java index 3c6cb15..aac5986 100644 --- a/src/main/java/com/muyu/vehicle/api/req/VehicleConnectionReq.java +++ b/src/main/java/com/muyu/vehicle/api/req/VehicleConnectionReq.java @@ -1,6 +1,6 @@ package com.muyu.vehicle.api.req; -import com.alibaba.fastjson.annotation.JSONField; +import com.alibaba.fastjson2.annotation.JSONField; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/src/main/java/com/muyu/vehicle/core/LocalContainer.java b/src/main/java/com/muyu/vehicle/core/LocalContainer.java index 33b391e..d237db4 100644 --- a/src/main/java/com/muyu/vehicle/core/LocalContainer.java +++ b/src/main/java/com/muyu/vehicle/core/LocalContainer.java @@ -27,7 +27,7 @@ public class LocalContainer { vehicleInstance.forEach(LocalContainer::setVehicleInstance); } public static void setVehicleInstance(VehicleInstance vehicleInstance){ - String vin = vehicleInstance.getVehicle().getVin(); + String vin = vehicleInstance.getVehicleInfo().getVin(); if (!vehicleDataMap.containsKey(vin)) { vehicleDataMap.put(vin, vehicleInstance); } diff --git a/src/main/java/com/muyu/vehicle/core/VehicleConfiguration.java b/src/main/java/com/muyu/vehicle/core/VehicleConfiguration.java index 536f529..820246f 100644 --- a/src/main/java/com/muyu/vehicle/core/VehicleConfiguration.java +++ b/src/main/java/com/muyu/vehicle/core/VehicleConfiguration.java @@ -3,17 +3,17 @@ package com.muyu.vehicle.core; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.muyu.web.common.pool.FixedThreadPool; import com.muyu.web.common.pool.ScheduledThreadPool; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; +import com.muyu.web.service.VehicleInfoService; import com.muyu.web.service.VehicleInstanceService; -import com.muyu.web.service.VehicleService; import com.muyu.vehicle.VehicleInstance; +import jakarta.annotation.PreDestroy; import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.context.annotation.Configuration; -import javax.annotation.PreDestroy; import java.util.List; /** @@ -27,7 +27,7 @@ import java.util.List; @AllArgsConstructor public class VehicleConfiguration implements ApplicationRunner { - private final VehicleService vehicleService; + private final VehicleInfoService vehicleInfoService; private final VehicleInstanceService vehicleInstanceService; @@ -39,11 +39,11 @@ public class VehicleConfiguration implements ApplicationRunner { int page = 0, pageSize = 10; log.info("初始开始,批量从数据库当中加载数据到内存当中,每次[{}]条", pageSize); while (true){ - Page vehiclePage = vehicleService.page(new Page<>(page++, pageSize)); - List vehicleList = vehiclePage.getRecords(); - vehicleList.forEach(vehicleInstanceService::init); - log.debug("第[{}]页,[{}]条", page, vehicleList.size()); - if (vehicleList.size() < pageSize){ + Page vehiclePage = vehicleInfoService.page(new Page<>(page++, pageSize)); + List vehicleInfoList = vehiclePage.getRecords(); + vehicleInfoList.forEach(vehicleInstanceService::init); + log.debug("第[{}]页,[{}]条", page, vehicleInfoList.size()); + if (vehicleInfoList.size() < pageSize){ break; } } @@ -65,7 +65,7 @@ public class VehicleConfiguration implements ApplicationRunner { log.info("数据库同步"); - vehicleService.syncDb(); + vehicleInfoService.syncDb(); log.info("下线所有车辆"); List onlineVehicleInstanceList = LocalContainer.getOnlineVehicleInstance(); diff --git a/src/main/java/com/muyu/vehicle/model/VehicleData.java b/src/main/java/com/muyu/vehicle/model/VehicleData.java index d8b8cf1..a7866f3 100644 --- a/src/main/java/com/muyu/vehicle/model/VehicleData.java +++ b/src/main/java/com/muyu/vehicle/model/VehicleData.java @@ -1,7 +1,7 @@ package com.muyu.vehicle.model; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -69,6 +69,7 @@ public class VehicleData { /** * 档位 */ + @Builder.Default private String gear = "P"; /** @@ -179,86 +180,103 @@ public class VehicleData { /** * 车辆状态 */ + @Builder.Default private int vehicleStatus = 1; /** * 充电状态 */ + @Builder.Default private int chargingStatus = 1; /** * 运行状态 */ + @Builder.Default private int operatingStatus = 1; /** * SOC */ + @Builder.Default private int socStatus = 1; /** * 可充电储能装置工作状态 */ + @Builder.Default private int chargingEnergyStorageStatus = 1; /** * 驱动电机状态 */ + @Builder.Default private int driveMotorStatus = 1; /** * 定位是否有效 */ + @Builder.Default private int positionStatus = 1; /** * EAS(汽车防盗系统)状态 */ + @Builder.Default private int easStatus = 1; /** * PTC(电动加热器)状态 */ + @Builder.Default private int ptcStatus = 1; /** * EPS(电动助力系统)状态 */ + @Builder.Default private int epsStatus = 1; /** * ABS(防抱死)状态 */ + @Builder.Default private int absStatus = 1; /** * MCU(电机/逆变器)状态 */ + @Builder.Default private int mcuStatus = 1; /** * 动力电池加热状态 */ + @Builder.Default private int heatingStatus = 1; /** * 动力电池当前状态 */ + @Builder.Default private int batteryStatus = 1; /** * 动力电池保温状态 */ + @Builder.Default private int batteryInsulationStatus = 1; /** * DCDC(电力交换系统)状态 */ + @Builder.Default private int dcdcStatus = 1; /** * CHG(充电机)状态 */ + @Builder.Default private int chgStatus = 1; /** @@ -385,16 +403,16 @@ public class VehicleData { /** * 汽车对象构造企业VIN - * @param vehicle 汽车对象 + * @param vehicleInfo 汽车对象 * @return 汽车数据对象 */ - public static VehicleData vehicleBuild (Vehicle vehicle) { + public static VehicleData vehicleBuild (VehicleInfo vehicleInfo) { return VehicleData.builder() - .vin(vehicle.getVin()) + .vin(vehicleInfo.getVin()) .gear("P") - .remainingBattery(vehicle.getRemainingBattery()) - .batteryLevel(vehicle.getBatteryLevel()) - .mileage(vehicle.getTotalMileage()) + .remainingBattery(vehicleInfo.getRemainingBattery()) + .batteryLevel(vehicleInfo.getBatteryLevel()) + .mileage(vehicleInfo.getTotalMileage()) .vehicleStatus(1) .chargingStatus(1) .operatingStatus(1) diff --git a/src/main/java/com/muyu/web/config/ForsetConfig.java b/src/main/java/com/muyu/web/config/ForsetConfig.java index 5e6e522..fce8f53 100644 --- a/src/main/java/com/muyu/web/config/ForsetConfig.java +++ b/src/main/java/com/muyu/web/config/ForsetConfig.java @@ -1,10 +1,7 @@ package com.muyu.web.config; import com.dtflys.forest.annotation.BindingVar; -import com.dtflys.forest.reflection.ForestMethod; -import com.muyu.web.config.properties.ServiceConfigProperties; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; +import com.muyu.system.handle.SystemHandler; import org.springframework.stereotype.Service; /** @@ -16,9 +13,6 @@ import org.springframework.stereotype.Service; @Service("forsetConfig") public class ForsetConfig { - @Autowired - private ServiceConfigProperties serviceConfigProperties; - /** * 使用 @BindingVar 注解 * 将变量名 baseUrl 和一段方法代码绑定 @@ -26,7 +20,7 @@ public class ForsetConfig { */ @BindingVar("vehicleLoadUrl") public String getBaseUrl() { - return serviceConfigProperties.getLoadReqUrl(); + return SystemHandler.getLoadReqUrl(); } } diff --git a/src/main/java/com/muyu/web/config/LoadServerConfig.java b/src/main/java/com/muyu/web/config/LoadServerConfig.java deleted file mode 100644 index 382d242..0000000 --- a/src/main/java/com/muyu/web/config/LoadServerConfig.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.muyu.web.config; - -import com.muyu.web.config.properties.ServiceConfigProperties; -import com.muyu.web.domain.model.ServerConfigModel; -import com.muyu.web.service.ServerConfigService; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @Author: DongZeLiang - * @date: 2024/6/10 - * @Description: 负载服务器配置 - * @Version: 1.0 - */ -@Configuration -public class LoadServerConfig { - - /** - * 静态引入,解决循环依赖的问题 - */ - private static final ServiceConfigProperties serviceConfigProperties = new ServiceConfigProperties(); - - @Bean - public ServiceConfigProperties serverConfig(ServerConfigService serverConfigService) { - return serviceConfigProperties.modelToProperties(serverConfigService.get()); - } - - public static void modelToProperties(ServerConfigModel serverConfigModel){ - serviceConfigProperties.modelToProperties(serverConfigModel); - } -} diff --git a/src/main/java/com/muyu/web/config/properties/ServiceConfigProperties.java b/src/main/java/com/muyu/web/config/properties/ServiceConfigProperties.java deleted file mode 100644 index 7dc977e..0000000 --- a/src/main/java/com/muyu/web/config/properties/ServiceConfigProperties.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.muyu.web.config.properties; - -import com.muyu.web.domain.model.ServerConfigModel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @Author: DongZeLiang - * @date: 2024/6/10 - * @Description: 服务器配置类 - * @Version: 1.0 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ServiceConfigProperties { - - /** - * 主机地址 - */ - private String host; - /** - * 端口号 - */ - private String port; - /** - * 负载地址 - */ - private String loadUrl; - /** - * 负载请求格式化地址 - */ - private String loadReqUrl; - /** - * 默认MQTT地址 - */ - private String mqttAddr; - /** - * 默认MQTT主题 - */ - private String mqttTopic; - /** - * 默认MQTT交付级别 - */ - private Integer mqttQos; - - /** - * 模型构建配置 - * @param serverConfigModel 配置模型对象 - * @return 配置对象 - */ - public ServiceConfigProperties modelToProperties(ServerConfigModel serverConfigModel) { - this.host = serverConfigModel.getHost(); - this.port = serverConfigModel.getPort(); - this.loadUrl = serverConfigModel.getLoadUrl(); - this.mqttAddr = serverConfigModel.getDefaultMqttAddr(); - this.mqttTopic = serverConfigModel.getDefaultMqttTopic(); - this.mqttQos = serverConfigModel.getDefaultMqttQos(); - this.loadReqUrl = String.format("http://%s:%s%s", host, port, loadUrl.startsWith("/") ? loadUrl : "/" + loadUrl); - return this; - } - -} diff --git a/src/main/java/com/muyu/web/controller/VehicleController.java b/src/main/java/com/muyu/web/controller/VehicleController.java index f44e76a..85dc9e4 100644 --- a/src/main/java/com/muyu/web/controller/VehicleController.java +++ b/src/main/java/com/muyu/web/controller/VehicleController.java @@ -1,9 +1,9 @@ package com.muyu.web.controller; import com.muyu.web.common.Result; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; import com.muyu.web.domain.req.VehicleCreateAddReq; -import com.muyu.web.service.VehicleService; +import com.muyu.web.service.VehicleInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -20,11 +20,11 @@ import java.util.List; public class VehicleController { @Autowired - private VehicleService vehicleService; + private VehicleInfoService vehicleInfoService; @GetMapping("/list") - public Result> list(){ - return Result.success(vehicleService.list()); + public Result> list(){ + return Result.success(vehicleInfoService.list()); } /** @@ -34,7 +34,7 @@ public class VehicleController { */ @GetMapping("/gen/{sum}") public Result generate(@PathVariable(value = "sum") Integer sum){ - vehicleService.generate(sum); + vehicleInfoService.generate(sum); return Result.success(); } /** @@ -44,7 +44,7 @@ public class VehicleController { */ @PostMapping("/create") public Result create(@RequestBody VehicleCreateAddReq vehicleCreateAddReq){ - vehicleService.create(vehicleCreateAddReq.getVinStr()); + vehicleInfoService.create(vehicleCreateAddReq.getVinStr()); return Result.success(); } @@ -56,7 +56,7 @@ public class VehicleController { */ @DeleteMapping("/{vin}") public Result delete(@PathVariable("vin") String vin){ - this.vehicleService.delete(vin); + this.vehicleInfoService.delete(vin); return Result.success(null,"删除成功"); } } diff --git a/src/main/java/com/muyu/web/controller/VerifyController.java b/src/main/java/com/muyu/web/controller/VerifyController.java index dc42ea5..ba0b8aa 100644 --- a/src/main/java/com/muyu/web/controller/VerifyController.java +++ b/src/main/java/com/muyu/web/controller/VerifyController.java @@ -1,7 +1,8 @@ package com.muyu.web.controller; +import com.muyu.system.handle.SystemHandler; import com.muyu.web.common.Result; -import com.muyu.web.config.properties.ServiceConfigProperties; +import com.muyu.system.properties.ServerConfigProperties; import com.muyu.web.domain.model.MqttServerModel; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; @@ -18,8 +19,6 @@ import org.springframework.web.bind.annotation.RestController; @AllArgsConstructor public class VerifyController { - private final ServiceConfigProperties serviceConfigProperties; - /** * 新增车辆默认上线主题 @@ -27,10 +26,11 @@ public class VerifyController { */ @PostMapping("/vehicleConnection") public Result vehicleConnection(){ + ServerConfigProperties serverConfig = SystemHandler.getServerConfig(); return Result.success( MqttServerModel.builder() - .broker(serviceConfigProperties.getMqttAddr()) - .topic(serviceConfigProperties.getMqttTopic()) + .broker(serverConfig.getMqttAddr()) + .topic(serverConfig.getMqttTopic()) .build() ); } diff --git a/src/main/java/com/muyu/web/domain/ServerConfig.java b/src/main/java/com/muyu/web/domain/ServerConfig.java index c8734da..c69ae1c 100644 --- a/src/main/java/com/muyu/web/domain/ServerConfig.java +++ b/src/main/java/com/muyu/web/domain/ServerConfig.java @@ -1,5 +1,7 @@ package com.muyu.web.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.muyu.web.domain.model.ServerConfigModel; import lombok.AllArgsConstructor; @@ -25,7 +27,17 @@ public class ServerConfig { /** * 主键 */ - private Integer id; + @TableId( + value = "id", + type = IdType.AUTO + ) + private Long id; + + /** + * 租户ID + */ + private String tenantId; + /** * 主机地址 */ @@ -37,7 +49,7 @@ public class ServerConfig { /** * 负载地址 */ - private String loadUrl; + private String uri; /** * 默认MQTT地址 */ @@ -51,12 +63,12 @@ public class ServerConfig { */ private Integer defaultMqttQos; - public static ServerConfig modeBuild (ServerConfigModel serverConfigModel, Supplier idKey) { + public static ServerConfig modeBuild (ServerConfigModel serverConfigModel, Supplier idKey) { return builder() .id(idKey.get()) .host(serverConfigModel.getHost()) .port(serverConfigModel.getPort()) - .loadUrl(serverConfigModel.getLoadUrl()) + .uri(serverConfigModel.getUri()) .defaultMqttAddr(serverConfigModel.getDefaultMqttAddr()) .defaultMqttTopic(serverConfigModel.getDefaultMqttTopic()) .defaultMqttQos(serverConfigModel.getDefaultMqttQos()) diff --git a/src/main/java/com/muyu/web/domain/Vehicle.java b/src/main/java/com/muyu/web/domain/VehicleInfo.java similarity index 83% rename from src/main/java/com/muyu/web/domain/Vehicle.java rename to src/main/java/com/muyu/web/domain/VehicleInfo.java index 1f0b853..13e1cc3 100644 --- a/src/main/java/com/muyu/web/domain/Vehicle.java +++ b/src/main/java/com/muyu/web/domain/VehicleInfo.java @@ -24,8 +24,8 @@ import java.util.Date; @Builder @NoArgsConstructor @AllArgsConstructor -@TableName("vehicle") -public class Vehicle { +@TableName("vehicle_info") +public class VehicleInfo { /** * VIN @@ -61,17 +61,17 @@ public class Vehicle { * 生成车辆数据 * @return 车辆数据 */ - public static Vehicle gen() { - return Vehicle.create(VehicleUtils.genVin()); + public static VehicleInfo gen() { + return VehicleInfo.create(VehicleUtils.genVin()); } /** * 生成车辆数据 * @return 车辆数据 */ - public static Vehicle create(String vin) { + public static VehicleInfo create(String vin) { BigDecimal battery = VehicleUtils.genBattery(); - return Vehicle.builder() + return VehicleInfo.builder() .vin(vin) .createTime(new Date()) .batteryLevel(battery) @@ -81,9 +81,9 @@ public class Vehicle { } - public static Vehicle instanceBuild (VehicleInstance vehicleInstance) { + public static VehicleInfo instanceBuild (VehicleInstance vehicleInstance) { VehicleData vehicle = vehicleInstance.getVehicleData(); - return Vehicle.builder() + return VehicleInfo.builder() .vin(vehicleInstance.getVin()) .remainingBattery(vehicle.getRemainingBattery()) .totalMileage(vehicle.getMileage()) diff --git a/src/main/java/com/muyu/web/domain/model/ServerConfigModel.java b/src/main/java/com/muyu/web/domain/model/ServerConfigModel.java index 6c5f274..505d27d 100644 --- a/src/main/java/com/muyu/web/domain/model/ServerConfigModel.java +++ b/src/main/java/com/muyu/web/domain/model/ServerConfigModel.java @@ -1,6 +1,5 @@ package com.muyu.web.domain.model; -import com.baomidou.mybatisplus.annotation.TableName; import com.muyu.web.domain.ServerConfig; import com.muyu.web.domain.req.ServerConfigEditReq; import lombok.AllArgsConstructor; @@ -31,7 +30,7 @@ public class ServerConfigModel { /** * 负载地址 */ - private String loadUrl; + private String uri; /** * 默认MQTT地址 */ @@ -49,7 +48,7 @@ public class ServerConfigModel { return builder() .host(serverConfig.getHost().trim()) .port(serverConfig.getPort()) - .loadUrl(serverConfig.getLoadUrl().trim()) + .uri(serverConfig.getUri().trim()) .defaultMqttAddr(serverConfig.getDefaultMqttAddr().trim()) .defaultMqttTopic(serverConfig.getDefaultMqttTopic().trim()) .defaultMqttQos(serverConfig.getDefaultMqttQos()) @@ -60,7 +59,7 @@ public class ServerConfigModel { return builder() .host(serverConfigReq.getHost().trim()) .port(serverConfigReq.getPort()) - .loadUrl(serverConfigReq.getLoadUrl().trim()) + .uri(serverConfigReq.getLoadUrl().trim()) .defaultMqttAddr(serverConfigReq.getDefaultMqttAddr().trim()) .defaultMqttTopic(serverConfigReq.getDefaultMqttTopic().trim()) .defaultMqttQos(serverConfigReq.getDefaultMqttQos()) diff --git a/src/main/java/com/muyu/web/domain/resp/ServerConfigResp.java b/src/main/java/com/muyu/web/domain/resp/ServerConfigResp.java index 1a98ccc..bce1f13 100644 --- a/src/main/java/com/muyu/web/domain/resp/ServerConfigResp.java +++ b/src/main/java/com/muyu/web/domain/resp/ServerConfigResp.java @@ -1,6 +1,5 @@ package com.muyu.web.domain.resp; -import com.baomidou.mybatisplus.annotation.TableName; import com.muyu.web.domain.model.ServerConfigModel; import lombok.AllArgsConstructor; import lombok.Builder; @@ -49,7 +48,7 @@ public class ServerConfigResp { return builder() .host(serverConfigModel.getHost()) .port(serverConfigModel.getPort()) - .loadUrl(serverConfigModel.getLoadUrl()) + .loadUrl(serverConfigModel.getUri()) .defaultMqttAddr(serverConfigModel.getDefaultMqttAddr()) .defaultMqttTopic(serverConfigModel.getDefaultMqttTopic()) .defaultMqttQos(serverConfigModel.getDefaultMqttQos()) diff --git a/src/main/java/com/muyu/web/mapper/VehicleMapper.java b/src/main/java/com/muyu/web/mapper/VehicleInfoMapper.java similarity index 68% rename from src/main/java/com/muyu/web/mapper/VehicleMapper.java rename to src/main/java/com/muyu/web/mapper/VehicleInfoMapper.java index c393170..3b4b43e 100644 --- a/src/main/java/com/muyu/web/mapper/VehicleMapper.java +++ b/src/main/java/com/muyu/web/mapper/VehicleInfoMapper.java @@ -1,7 +1,7 @@ package com.muyu.web.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; import org.apache.ibatis.annotations.Mapper; /** @@ -13,6 +13,6 @@ import org.apache.ibatis.annotations.Mapper; * @since 2022-07-05 */ @Mapper -public interface VehicleMapper extends BaseMapper { +public interface VehicleInfoMapper extends BaseMapper { } diff --git a/src/main/java/com/muyu/web/service/VehicleService.java b/src/main/java/com/muyu/web/service/VehicleInfoService.java similarity index 83% rename from src/main/java/com/muyu/web/service/VehicleService.java rename to src/main/java/com/muyu/web/service/VehicleInfoService.java index 47e4ddc..bee946e 100644 --- a/src/main/java/com/muyu/web/service/VehicleService.java +++ b/src/main/java/com/muyu/web/service/VehicleInfoService.java @@ -1,7 +1,7 @@ package com.muyu.web.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; /** *

@@ -11,7 +11,7 @@ import com.muyu.web.domain.Vehicle; * @author DongZeLiang * @since 2022-07-05 */ -public interface VehicleService extends IService { +public interface VehicleInfoService extends IService { /** * 根据数量生成测试车辆 diff --git a/src/main/java/com/muyu/web/service/VehicleInstanceService.java b/src/main/java/com/muyu/web/service/VehicleInstanceService.java index c438998..ae83b34 100644 --- a/src/main/java/com/muyu/web/service/VehicleInstanceService.java +++ b/src/main/java/com/muyu/web/service/VehicleInstanceService.java @@ -1,7 +1,7 @@ package com.muyu.web.service; import com.muyu.web.common.PageList; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; import com.muyu.web.domain.req.CheckPositionReq; import com.muyu.web.domain.req.GearReq; import com.muyu.web.domain.req.MsgReq; @@ -18,9 +18,9 @@ public interface VehicleInstanceService { /** * 根据车辆生成车辆实例 - * @param vehicle 车辆信息 + * @param vehicleInfo 车辆信息 */ - public void init(Vehicle vehicle); + public void init(VehicleInfo vehicleInfo); /** diff --git a/src/main/java/com/muyu/web/service/impl/ServerConfigServiceImpl.java b/src/main/java/com/muyu/web/service/impl/ServerConfigServiceImpl.java index d59d4ee..c18d3ef 100644 --- a/src/main/java/com/muyu/web/service/impl/ServerConfigServiceImpl.java +++ b/src/main/java/com/muyu/web/service/impl/ServerConfigServiceImpl.java @@ -2,12 +2,11 @@ package com.muyu.web.service.impl; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.muyu.web.config.LoadServerConfig; -import com.muyu.web.config.properties.ServiceConfigProperties; +import com.muyu.system.handle.SystemHandler; +import com.muyu.system.properties.ServerConfigProperties; import com.muyu.web.domain.ServerConfig; import com.muyu.web.domain.model.ServerConfigModel; import com.muyu.web.service.ServerConfigService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -31,7 +30,7 @@ public class ServerConfigServiceImpl extends ServiceImpl key); + ServerConfig serverConfig = ServerConfig.modeBuild(serverConfigModel, () -> SystemHandler.getUserId()); updateById(serverConfig); - LoadServerConfig.modelToProperties(serverConfigModel); + SystemHandler.setServerConfig( + ServerConfigProperties.modelToProperties(serverConfigModel) + ); } } diff --git a/src/main/java/com/muyu/web/service/impl/VechileServiceImpl.java b/src/main/java/com/muyu/web/service/impl/VechileInfoServiceImpl.java similarity index 73% rename from src/main/java/com/muyu/web/service/impl/VechileServiceImpl.java rename to src/main/java/com/muyu/web/service/impl/VechileInfoServiceImpl.java index b681adb..7928ac5 100644 --- a/src/main/java/com/muyu/web/service/impl/VechileServiceImpl.java +++ b/src/main/java/com/muyu/web/service/impl/VechileInfoServiceImpl.java @@ -3,10 +3,10 @@ package com.muyu.web.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.muyu.web.domain.Vehicle; -import com.muyu.web.mapper.VehicleMapper; +import com.muyu.web.domain.VehicleInfo; +import com.muyu.web.mapper.VehicleInfoMapper; import com.muyu.web.service.VehicleInstanceService; -import com.muyu.web.service.VehicleService; +import com.muyu.web.service.VehicleInfoService; import com.muyu.vehicle.VehicleInstance; import com.muyu.vehicle.core.LocalContainer; import lombok.extern.log4j.Log4j2; @@ -30,7 +30,7 @@ import java.util.stream.Stream; */ @Log4j2 @Service -public class VechileServiceImpl extends ServiceImpl implements VehicleService { +public class VechileInfoServiceImpl extends ServiceImpl implements VehicleInfoService { @Autowired @@ -44,9 +44,9 @@ public class VechileServiceImpl extends ServiceImpl impl @Override @Transactional public void generate (Integer sum) { - List vehicleList = Stream.generate(Vehicle::gen).limit(sum).toList(); - this.saveBatch(vehicleList); - vehicleList.forEach(vehicleInstanceService::init); + List vehicleInfoList = Stream.generate(VehicleInfo::gen).limit(sum).toList(); + this.saveBatch(vehicleInfoList); + vehicleInfoList.forEach(vehicleInstanceService::init); } /** @@ -63,8 +63,8 @@ public class VechileServiceImpl extends ServiceImpl impl if (vin.length() != 17) { errorMsg.append("vin[").append(vin).append("]").append("不为17位\n"); } else { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Vehicle::getVin, vin); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(VehicleInfo::getVin, vin); long count = this.count(queryWrapper); if (count == 1) { errorMsg.append("vin[").append(vin).append("]").append("已经存在\n"); @@ -74,9 +74,9 @@ public class VechileServiceImpl extends ServiceImpl impl if (!errorMsg.isEmpty()) { throw new RuntimeException(errorMsg.toString()); } - List vehicleList = Arrays.stream(vinList).map(Vehicle::create).toList(); - this.saveBatch(vehicleList); - vehicleList.forEach(vehicleInstanceService::init); + List vehicleInfoList = Arrays.stream(vinList).map(VehicleInfo::create).toList(); + this.saveBatch(vehicleInfoList); + vehicleInfoList.forEach(vehicleInstanceService::init); } /** @@ -91,15 +91,15 @@ public class VechileServiceImpl extends ServiceImpl impl Collection vehicleInstanceList = LocalContainer.getOnlineVehicleInstance(); // 成功数量 AtomicInteger syncSuccessSum = new AtomicInteger(); - List vehicleList = vehicleInstanceList.stream() + List vehicleInfoList = vehicleInstanceList.stream() .filter(VehicleInstance::isOnline) - .map(Vehicle::instanceBuild) + .map(VehicleInfo::instanceBuild) .toList(); - vehicleList.forEach(vehicle -> { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(Vehicle::getRemainingBattery, vehicle.getRemainingBattery()); - updateWrapper.set(Vehicle::getTotalMileage, vehicle.getTotalMileage()); - updateWrapper.eq(Vehicle::getVin, vehicle.getVin()); + vehicleInfoList.forEach(vehicle -> { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.set(VehicleInfo::getRemainingBattery, vehicle.getRemainingBattery()); + updateWrapper.set(VehicleInfo::getTotalMileage, vehicle.getTotalMileage()); + updateWrapper.eq(VehicleInfo::getVin, vehicle.getVin()); try { this.update(updateWrapper); syncSuccessSum.incrementAndGet(); @@ -109,7 +109,7 @@ public class VechileServiceImpl extends ServiceImpl impl } }); log.info("同步数据库结束 - 耗时:[{}MS],同步量:[{}辆],成功:[{}辆],失败:[{}辆]", - System.currentTimeMillis() - startTime, vehicleList.size(),syncSuccessSum.get(), vehicleList.size() - syncSuccessSum.get()); + System.currentTimeMillis() - startTime, vehicleInfoList.size(),syncSuccessSum.get(), vehicleInfoList.size() - syncSuccessSum.get()); }catch (Exception exception){ log.error("数据同步异常:{}", exception.getMessage(), exception); } diff --git a/src/main/java/com/muyu/web/service/impl/VehicleInstanceServiceImpl.java b/src/main/java/com/muyu/web/service/impl/VehicleInstanceServiceImpl.java index 9b2a026..e11394f 100644 --- a/src/main/java/com/muyu/web/service/impl/VehicleInstanceServiceImpl.java +++ b/src/main/java/com/muyu/web/service/impl/VehicleInstanceServiceImpl.java @@ -8,7 +8,7 @@ import com.muyu.vehicle.model.VehicleData; import com.muyu.vehicle.model.properties.MqttProperties; import com.muyu.web.common.PageList; import com.muyu.web.common.Result; -import com.muyu.web.domain.Vehicle; +import com.muyu.web.domain.VehicleInfo; import com.muyu.web.domain.model.MqttServerModel; import com.muyu.web.domain.model.PositionModel; import com.muyu.web.domain.req.CheckPositionReq; @@ -50,15 +50,15 @@ public class VehicleInstanceServiceImpl implements VehicleInstanceService { /** * 根据车辆生成车辆实例 * - * @param vehicle 车辆信息 + * @param vehicleInfo 车辆信息 */ @Override - public void init(Vehicle vehicle) { + public void init(VehicleInfo vehicleInfo) { VehicleInstance vehicleInstance = new VehicleInstance(); - vehicleInstance.setVehicle(vehicle); - vehicleInstance.setVehicleData(VehicleData.vehicleBuild(vehicle)); + vehicleInstance.setVehicleInfo(vehicleInfo); + vehicleInstance.setVehicleData(VehicleData.vehicleBuild(vehicleInfo)); LocalContainer.setVehicleInstance(vehicleInstance); - log.debug("构建车辆对象: [{}]", vehicle.getVin()); + log.debug("构建车辆对象: [{}]", vehicleInfo.getVin()); } /** diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 4ca9853..cd0f314 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -7,30 +7,14 @@ spring: static-path-pattern: /static/** datasource: - username: muyu - password: 123456 - # 如果需要数据本地化,则改成 file 方式 - # jdbc:h2:mem:testDB;DB_CLOSE_DELAY=-1 - url: jdbc:h2:file:./db/vehicleSimulationDataBaseFile;AUTO_SERVER=TRUE;DB_CLOSE_DELAY=-1 - driver-class-name: org.h2.Driver - h2: - # 开启这个配置就可以通过 web 页面访问了,例如:http://localhost:8080/springboot-h2/h2-console - console: - enabled: true - settings: - # 开启h2 console 跟踪 方便调试 默认 false - trace: false - # 允许console 远程访问 默认false - web-allow-others: true - # h2 访问路径上下文 - path: /h2-console + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://47.92.86.60:23658/muyu-vehicle?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: Vehicle@666 # mybatis-plus 配置 mybatis-plus: - mapper-locations: classpath*:/com.muyu.mapper/**/*.xml - #实体扫描,多个package用逗号或者分号分隔 - typeAliasesPackage: com.dmo.entity global-config: #数据库相关配置 db-config: