修复:解决 Jackson2ObjectMapperBuilderCustomizer 配置不生效的问题,同时优化所有 Date 类型为对应 Java 8 日期、时间类型
This commit is contained in:
parent
0c9226a8ef
commit
1d21019813
@ -16,6 +16,8 @@
|
||||
|
||||
package top.charles7c.cnadmin.common.config;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -23,6 +25,8 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.CacheControl;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
||||
import org.springframework.web.cors.CorsConfiguration;
|
||||
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
|
||||
import org.springframework.web.filter.CorsFilter;
|
||||
@ -44,6 +48,7 @@ import top.charles7c.cnadmin.common.config.properties.CorsProperties;
|
||||
public class WebMvcConfiguration implements WebMvcConfigurer {
|
||||
|
||||
private final CorsProperties corsProperties;
|
||||
private final MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter;
|
||||
|
||||
/**
|
||||
* 静态资源处理器配置
|
||||
@ -78,4 +83,20 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
|
||||
source.registerCorsConfiguration("/**", config);
|
||||
return new CorsFilter(source);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解决 Jackson2ObjectMapperBuilderCustomizer 配置不生效的问题
|
||||
* <p>
|
||||
* MappingJackson2HttpMessageConverter 对象在程序启动时创建了多个,移除多余的,保证只有一个
|
||||
* </p>
|
||||
*/
|
||||
@Override
|
||||
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
|
||||
converters.removeIf(MappingJackson2HttpMessageConverter.class::isInstance);
|
||||
if (Objects.isNull(mappingJackson2HttpMessageConverter)) {
|
||||
converters.add(0, new MappingJackson2HttpMessageConverter());
|
||||
} else {
|
||||
converters.add(0, mappingJackson2HttpMessageConverter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,6 @@ import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Locale;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -60,11 +59,6 @@ public class JacksonConfiguration {
|
||||
String timeFormatPattern = "HH:mm:ss";
|
||||
|
||||
return builder -> {
|
||||
// 针对 java.util.Date 的转换
|
||||
builder.locale(Locale.CHINA);
|
||||
builder.timeZone(TimeZone.getDefault());
|
||||
builder.simpleDateFormat(dateTimeFormatPattern);
|
||||
|
||||
// 针对 Long、BigInteger、BigDecimal 的转换
|
||||
JavaTimeModule javaTimeModule = new JavaTimeModule();
|
||||
javaTimeModule.addSerializer(Long.class, BigNumberSerializer.SERIALIZER_INSTANCE);
|
||||
@ -85,6 +79,7 @@ public class JacksonConfiguration {
|
||||
javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(timeFormatter));
|
||||
javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(timeFormatter));
|
||||
builder.modules(javaTimeModule);
|
||||
builder.timeZone(TimeZone.getDefault());
|
||||
log.info(">>>初始化 Jackson 配置<<<");
|
||||
};
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
package top.charles7c.cnadmin.common.config.mybatis;
|
||||
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import org.apache.ibatis.reflection.MetaObject;
|
||||
|
||||
@ -59,7 +59,7 @@ public class MyBatisPlusMetaObjectHandler implements MetaObjectHandler {
|
||||
}
|
||||
|
||||
Long createUser = LoginHelper.getUserId();
|
||||
Date createTime = new Date();
|
||||
LocalDateTime createTime = LocalDateTime.now();
|
||||
if (metaObject.getOriginalObject() instanceof BaseEntity) {
|
||||
// 继承了 BaseEntity 的类,填充创建信息
|
||||
BaseEntity baseEntity = (BaseEntity)metaObject.getOriginalObject();
|
||||
@ -93,7 +93,7 @@ public class MyBatisPlusMetaObjectHandler implements MetaObjectHandler {
|
||||
}
|
||||
|
||||
Long updateUser = LoginHelper.getUserId();
|
||||
Date updateTime = new Date();
|
||||
LocalDateTime updateTime = LocalDateTime.now();
|
||||
if (metaObject.getOriginalObject() instanceof BaseEntity) {
|
||||
// 继承了 BaseEntity 的类,填充修改信息
|
||||
BaseEntity baseEntity = (BaseEntity)metaObject.getOriginalObject();
|
||||
|
@ -17,6 +17,7 @@
|
||||
package top.charles7c.cnadmin.common.model.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@ -32,7 +33,7 @@ public class LoginUser implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 用户 ID
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
@ -75,4 +76,14 @@ public class LoginUser implements Serializable {
|
||||
* 状态(1启用 2禁用)
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 最后一次修改密码的时间
|
||||
*/
|
||||
private LocalDateTime pwdResetTime;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
package top.charles7c.cnadmin.common.model.dto;
|
||||
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@ -37,7 +37,7 @@ public class OperationLog {
|
||||
/**
|
||||
* 操作时间
|
||||
*/
|
||||
private Date createTime;
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 异常
|
||||
|
@ -17,7 +17,7 @@
|
||||
package top.charles7c.cnadmin.common.model.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@ -45,7 +45,7 @@ public class BaseEntity implements Serializable {
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
@ -57,5 +57,5 @@ public class BaseEntity implements Serializable {
|
||||
* 修改时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private Date updateTime;
|
||||
private LocalDateTime updateTime;
|
||||
}
|
||||
|
@ -27,8 +27,6 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 响应信息
|
||||
*
|
||||
@ -60,7 +58,6 @@ public class R<V extends Serializable> implements Serializable {
|
||||
|
||||
/** 时间戳 */
|
||||
@Schema(description = "时间戳")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime timestamp = LocalDateTime.now();
|
||||
|
||||
/** 成功状态码 */
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
package top.charles7c.cnadmin.monitor.interceptor;
|
||||
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@ -37,6 +37,7 @@ import org.springframework.web.util.ContentCachingResponseWrapper;
|
||||
import org.springframework.web.util.WebUtils;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.exceptions.ExceptionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.servlet.ServletUtil;
|
||||
@ -104,7 +105,7 @@ public class LogInterceptor implements HandlerInterceptor {
|
||||
private void logCreateTime() {
|
||||
OperationLog operationLog = new OperationLog();
|
||||
operationLog.setCreateUser(LoginHelper.getUserId());
|
||||
operationLog.setCreateTime(new Date());
|
||||
operationLog.setCreateTime(LocalDateTime.now());
|
||||
LogContextHolder.set(operationLog);
|
||||
}
|
||||
|
||||
@ -119,7 +120,7 @@ public class LogInterceptor implements HandlerInterceptor {
|
||||
LogContextHolder.remove();
|
||||
SysLog sysLog = new SysLog();
|
||||
sysLog.setCreateTime(operationLog.getCreateTime());
|
||||
sysLog.setElapsedTime(System.currentTimeMillis() - sysLog.getCreateTime().getTime());
|
||||
sysLog.setElapsedTime(System.currentTimeMillis() - LocalDateTimeUtil.toEpochMilli(sysLog.getCreateTime()));
|
||||
sysLog.setLogLevel(LogLevelEnum.INFO);
|
||||
|
||||
// 记录异常信息
|
||||
|
@ -17,7 +17,7 @@
|
||||
package top.charles7c.cnadmin.monitor.model.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@ -122,5 +122,5 @@ public class SysLog implements Serializable {
|
||||
/**
|
||||
* 操作时间
|
||||
*/
|
||||
private Date createTime;
|
||||
private LocalDateTime createTime;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
package top.charles7c.cnadmin.system.model.entity;
|
||||
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@ -38,7 +38,7 @@ public class SysUser extends BaseEntity {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 用户 ID
|
||||
* 用户ID
|
||||
*/
|
||||
@TableId
|
||||
private Long userId;
|
||||
@ -91,5 +91,5 @@ public class SysUser extends BaseEntity {
|
||||
/**
|
||||
* 最后一次修改密码的时间
|
||||
*/
|
||||
private Date pwdResetTime;
|
||||
private LocalDateTime pwdResetTime;
|
||||
}
|
||||
|
@ -173,7 +173,7 @@ spring:
|
||||
jackson:
|
||||
# 时区配置
|
||||
time-zone: GMT+8
|
||||
# 日期格式化
|
||||
# 日期格式化(针对 java.util.Date)
|
||||
date-format: yyyy-MM-dd HH:mm:ss
|
||||
# 序列化配置(Bean -> JSON)
|
||||
serialization:
|
||||
|
Loading…
Reference in New Issue
Block a user