feat: 升级Date
This commit is contained in:
parent
c662fa1c65
commit
4dfe06ffb2
@ -5,6 +5,7 @@ import com.flyfish.framework.approval.enums.ApproveAction;
|
||||
import com.flyfish.framework.domain.base.Vo;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.Optional;
|
||||
|
||||
@ -23,7 +24,7 @@ public class ApproveRecordListVo implements Vo<ApproveRecord> {
|
||||
private String approver;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private Date approveTime;
|
||||
private LocalDateTime approveTime;
|
||||
|
||||
private String action;
|
||||
|
||||
|
@ -5,6 +5,7 @@ import com.flyfish.framework.approval.domain.record.ApproveRecord;
|
||||
import com.flyfish.framework.domain.base.Vo;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
@ -24,7 +25,7 @@ public class ApprovalListVo implements Vo<ApproveRecord> {
|
||||
private String dataId;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private Date createTime;
|
||||
private LocalDateTime createTime;
|
||||
|
||||
private String creator;
|
||||
|
||||
|
@ -3,7 +3,7 @@ package com.flyfish.framework.backup.domain;
|
||||
import com.flyfish.framework.annotations.Property;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 版本号实体
|
||||
@ -23,5 +23,5 @@ public class Version {
|
||||
private String script;
|
||||
|
||||
@Property("创建时间")
|
||||
private Date time;
|
||||
private LocalDateTime time;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.flyfish.framework.backup.scheduler;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.flyfish.framework.backup.domain.Backup;
|
||||
import com.flyfish.framework.context.DateContext;
|
||||
import com.flyfish.framework.domain.base.DomainService;
|
||||
import com.flyfish.framework.query.Query;
|
||||
import com.flyfish.framework.repository.ReactiveEntityOperations;
|
||||
@ -28,7 +29,7 @@ import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
@ -82,7 +83,7 @@ public class BackupScheduler {
|
||||
String parent = createIfNotExists(backupPath + "/" + code);
|
||||
// 开始备份,先构造一个指示器
|
||||
Backup backup = new Backup();
|
||||
backup.setCreateTime(new Date());
|
||||
backup.setCreateTime(LocalDateTime.now());
|
||||
backup.setCreator("系统");
|
||||
backup.setCode(code);
|
||||
backup.setStatus(Backup.Status.RUNNING);
|
||||
@ -116,7 +117,7 @@ public class BackupScheduler {
|
||||
})
|
||||
.then(Mono.defer(() -> {
|
||||
backup.setLog("成功备份");
|
||||
backup.setPeriod(new Date().getTime() - backup.getCreateTime().getTime());
|
||||
backup.setPeriod(DateContext.distance(backup.getCreateTime(), LocalDateTime.now()));
|
||||
backup.setStatus(Backup.Status.SUCCESS);
|
||||
backup.setSize(DataSize.ofBytes(sizeCounter.get()).toKilobytes() + "KB");
|
||||
return operations.save(backup);
|
||||
@ -126,7 +127,7 @@ public class BackupScheduler {
|
||||
}, e -> {
|
||||
backup.setStatus(Backup.Status.FAILED);
|
||||
backup.setLog(e.getMessage());
|
||||
backup.setPeriod(new Date().getTime() - backup.getCreateTime().getTime());
|
||||
backup.setPeriod(DateContext.distance(backup.getCreateTime(), LocalDateTime.now()));
|
||||
operations.save(backup).subscribe();
|
||||
});
|
||||
|
||||
|
@ -5,6 +5,9 @@ import org.springframework.stereotype.Component;
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@ -20,6 +23,7 @@ public class DateContext {
|
||||
private static DateContext instance;
|
||||
private ThreadLocal<DateFormat> formatThreadLocal = new ThreadLocal<>();
|
||||
private ThreadLocal<Map<String, DateFormat>> mapThreadLocal = new ThreadLocal<>();
|
||||
private static final ZoneId zoneId = ZoneId.of("Asia/Shanghai");
|
||||
|
||||
public DateContext() {
|
||||
instance = this;
|
||||
@ -29,6 +33,19 @@ public class DateContext {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static LocalDateTime ofMillis(long millis) {
|
||||
Instant instant = Instant.ofEpochMilli(millis);
|
||||
return LocalDateTime.ofInstant(instant, zoneId);
|
||||
}
|
||||
|
||||
public static long toMillis(LocalDateTime localDateTime) {
|
||||
return localDateTime.atZone(zoneId).toInstant().toEpochMilli();
|
||||
}
|
||||
|
||||
public static long distance(LocalDateTime start, LocalDateTime end) {
|
||||
return toMillis(end) - toMillis(start);
|
||||
}
|
||||
|
||||
public static DateFormat simpleFormat() {
|
||||
DateFormat format = instance.formatThreadLocal.get();
|
||||
if (format == null) {
|
||||
|
@ -1,22 +0,0 @@
|
||||
package com.flyfish.framework.query.spi;
|
||||
|
||||
import com.flyfish.framework.query.QueryChain;
|
||||
import com.flyfish.framework.utils.Supportable;
|
||||
|
||||
/**
|
||||
* 查询链创建抽象泛型工厂
|
||||
* 基于spi提供实现类,最终返回真正实例化的内容
|
||||
* 根据引入的jar包自动加载,无需手动处理
|
||||
*
|
||||
* @author wangyu
|
||||
*/
|
||||
public interface QueryChainFactory<C extends QueryChain<C, ?>> extends Supportable<Class<?>> {
|
||||
|
||||
/**
|
||||
* 生产适配器
|
||||
* 此接口为高度抽象接口,目的是兼容更多的查询链类型,便于后续扩展
|
||||
*
|
||||
* @return 生产结果
|
||||
*/
|
||||
C produce();
|
||||
}
|
@ -8,7 +8,7 @@ import org.springframework.data.annotation.CreatedDate;
|
||||
import org.springframework.data.annotation.LastModifiedBy;
|
||||
import org.springframework.data.annotation.LastModifiedDate;
|
||||
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 需要审查的domain(修改和更新指定人)
|
||||
@ -24,14 +24,14 @@ public abstract class AuditDomain extends Domain {
|
||||
*/
|
||||
@CreatedDate
|
||||
@Property(value = "创建日期", readonly = true)
|
||||
protected Date createTime;
|
||||
protected LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 修改日期
|
||||
*/
|
||||
@LastModifiedDate
|
||||
@Property(value = "更新日期", readonly = true)
|
||||
protected Date modifyTime;
|
||||
protected LocalDateTime modifyTime;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
|
@ -6,7 +6,7 @@ import com.flyfish.framework.domain.po.User;
|
||||
import com.flyfish.framework.enums.UserStatus;
|
||||
import com.flyfish.framework.enums.UserType;
|
||||
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
public interface IUser {
|
||||
@ -51,9 +51,9 @@ public interface IUser {
|
||||
|
||||
void setApp(Boolean app);
|
||||
|
||||
Date getValidDate();
|
||||
LocalDateTime getValidDate();
|
||||
|
||||
void setValidDate(Date validDate);
|
||||
void setValidDate(LocalDateTime validDate);
|
||||
|
||||
List<Department> getDepartments();
|
||||
|
||||
|
@ -13,6 +13,7 @@ import org.springframework.data.annotation.Transient;
|
||||
import org.springframework.data.mongodb.core.index.Indexed;
|
||||
import org.springframework.data.mongodb.core.mapping.Document;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@ -68,7 +69,7 @@ public class User extends AuditDomain implements IUser {
|
||||
* 有效期
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date validDate;
|
||||
private LocalDateTime validDate;
|
||||
|
||||
/**
|
||||
* 可操作校区
|
||||
@ -106,7 +107,7 @@ public class User extends AuditDomain implements IUser {
|
||||
/**
|
||||
* 上次登录日期
|
||||
*/
|
||||
private Date lastTime;
|
||||
private LocalDateTime lastTime;
|
||||
|
||||
@Override
|
||||
public User toUser() {
|
||||
|
@ -29,5 +29,10 @@
|
||||
<groupId>com.flyfish.framework</groupId>
|
||||
<artifactId>flyfish-data-common</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
@ -5,9 +5,10 @@ import com.flyfish.framework.r2dbc.operations.R2dbcReactiveEntityOperations;
|
||||
import com.flyfish.framework.r2dbc.repository.factory.DefaultReactiveRepositoryFactoryBean;
|
||||
import com.flyfish.framework.r2dbc.repository.impl.DefaultReactiveRepositoryImpl;
|
||||
import com.flyfish.framework.repository.ReactiveEntityOperations;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.data.mapping.callback.EntityCallback;
|
||||
import org.springframework.data.r2dbc.config.EnableR2dbcAuditing;
|
||||
import org.springframework.data.r2dbc.core.R2dbcEntityOperations;
|
||||
@ -23,7 +24,7 @@ import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories;
|
||||
repositoryBaseClass = DefaultReactiveRepositoryImpl.class
|
||||
)
|
||||
@EnableR2dbcAuditing
|
||||
@Configuration
|
||||
@AutoConfiguration(after = R2dbcDataAutoConfiguration.class)
|
||||
public class R2dbcDataConfig {
|
||||
|
||||
@Bean
|
||||
|
@ -3,7 +3,6 @@ package com.flyfish.framework.r2dbc.config.annotations;
|
||||
import com.flyfish.framework.r2dbc.repository.factory.DefaultReactiveRepositoryFactoryBean;
|
||||
import com.flyfish.framework.r2dbc.repository.impl.DefaultReactiveRepositoryImpl;
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
import org.springframework.data.r2dbc.config.EnableR2dbcAuditing;
|
||||
import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories;
|
||||
|
||||
import java.lang.annotation.*;
|
||||
@ -17,7 +16,6 @@ import java.lang.annotation.*;
|
||||
repositoryFactoryBeanClass = DefaultReactiveRepositoryFactoryBean.class,
|
||||
repositoryBaseClass = DefaultReactiveRepositoryImpl.class
|
||||
)
|
||||
@EnableR2dbcAuditing
|
||||
@Target({ElementType.TYPE})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
|
@ -0,0 +1,33 @@
|
||||
package com.flyfish.framework.r2dbc;
|
||||
|
||||
import com.flyfish.framework.query.Queries;
|
||||
import com.flyfish.framework.r2dbc.config.R2dbcDataConfig;
|
||||
import com.flyfish.framework.r2dbc.config.annotations.EnableR2dbcRepo;
|
||||
import com.flyfish.framework.r2dbc.repository.TestDO;
|
||||
import com.flyfish.framework.r2dbc.repository.TestQO;
|
||||
import com.flyfish.framework.r2dbc.repository.TestRepository;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
|
||||
@ExtendWith(SpringExtension.class)
|
||||
@SpringBootTest(classes = R2DbcRepositoryTest.class)
|
||||
@EnableR2dbcRepo(basePackages = "com.flyfish.framework.r2dbc.repository")
|
||||
@Import(R2dbcDataConfig.class)
|
||||
public class R2DbcRepositoryTest {
|
||||
|
||||
@Resource
|
||||
private TestRepository testRepository;
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
TestQO qo = new TestQO();
|
||||
qo.setIds(Arrays.asList("1", "2"));
|
||||
testRepository.findAll(qo).subscribe(System.out::println);
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
package com.flyfish.framework.r2dbc.repository;
|
||||
|
||||
import com.flyfish.framework.domain.base.AuditDomain;
|
||||
import lombok.Data;
|
||||
import org.springframework.data.relational.core.mapping.Table;
|
||||
|
||||
@Table("test")
|
||||
@Data
|
||||
public class TestDO extends AuditDomain {
|
||||
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package com.flyfish.framework.r2dbc.repository;
|
||||
|
||||
import com.flyfish.framework.domain.base.NameLikeQo;
|
||||
|
||||
public class TestQO extends NameLikeQo<TestDO> {
|
||||
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package com.flyfish.framework.r2dbc.repository;
|
||||
|
||||
import com.flyfish.framework.repository.DefaultReactiveRepository;
|
||||
|
||||
/**
|
||||
* 测试仓库
|
||||
*/
|
||||
public interface TestRepository extends DefaultReactiveRepository<TestDO> {
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
spring:
|
||||
r2dbc:
|
||||
url: r2dbc:mysql://192.168.33.205:3306/test?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true
|
||||
username: root
|
||||
password: baiewf9XMq5K9Z2LiCXZ
|
@ -6,7 +6,7 @@ import lombok.EqualsAndHashCode;
|
||||
import org.springframework.data.mongodb.core.mapping.Document;
|
||||
import org.springframework.data.relational.core.mapping.Table;
|
||||
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 日志集合
|
||||
@ -45,10 +45,10 @@ public class Log extends Domain {
|
||||
private Long period;
|
||||
|
||||
// 操作时间
|
||||
private Date startTime;
|
||||
private LocalDateTime startTime;
|
||||
|
||||
// 完成时间
|
||||
private Date endTime;
|
||||
private LocalDateTime endTime;
|
||||
|
||||
// 操作人
|
||||
private String operator;
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.flyfish.framework.logging.service;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.flyfish.framework.context.DateContext;
|
||||
import com.flyfish.framework.logging.config.LoggingTextRegistry;
|
||||
import com.flyfish.framework.logging.domain.Log;
|
||||
import com.flyfish.framework.logging.domain.LogType;
|
||||
@ -10,7 +11,6 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.DisposableBean;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
@ -52,8 +52,8 @@ public class LogManager implements DisposableBean {
|
||||
log.setOperator(context.getUser());
|
||||
log.setSignature(context.getSignature());
|
||||
log.setPeriod(context.getEndTime() - context.getStartTime());
|
||||
log.setStartTime(new Date(context.getStartTime()));
|
||||
log.setEndTime(new Date(context.getEndTime()));
|
||||
log.setStartTime(DateContext.ofMillis(context.getStartTime()));
|
||||
log.setEndTime(DateContext.ofMillis(context.getEndTime()));
|
||||
// 先不拼接
|
||||
log.setUri(null);
|
||||
// 写入日志
|
||||
|
@ -14,7 +14,7 @@ import org.springframework.stereotype.Service;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
@ -80,7 +80,7 @@ public class SimpleAuthenticationLogger implements AuthenticationLogger {
|
||||
log.setResponse(message);
|
||||
log.setOperator(Optional.ofNullable(raw).map(Domain::getName).orElse("未知"));
|
||||
log.setPeriod(0L);
|
||||
log.setStartTime(new Date());
|
||||
log.setStartTime(LocalDateTime.now());
|
||||
// 写入日志
|
||||
return logService.create(log).then();
|
||||
}
|
||||
@ -104,7 +104,7 @@ public class SimpleAuthenticationLogger implements AuthenticationLogger {
|
||||
log.setResponse(message);
|
||||
log.setOperator(user.getName());
|
||||
log.setPeriod(0L);
|
||||
log.setStartTime(new Date());
|
||||
log.setStartTime(LocalDateTime.now());
|
||||
// 写入日志
|
||||
return logService.create(log).then();
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ import org.springframework.security.web.server.WebFilterExchange;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 提供对象写入,登录登出审计
|
||||
@ -39,7 +39,7 @@ public class AuthenticationAuditorImpl extends ResultDataTransformer implements
|
||||
User updating = new User();
|
||||
updating.setId(details.getId());
|
||||
updating.setErrorCount(0);
|
||||
updating.setLastTime(new Date());
|
||||
updating.setLastTime(LocalDateTime.now());
|
||||
return userService.updateSelectiveById(updating).then(authenticationLogger.success(user));
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@ -77,7 +78,7 @@ public class AdminUserDetails implements UserDetails, IUser, AuthorizedUserDetai
|
||||
* 有效期
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date validDate;
|
||||
private LocalDateTime validDate;
|
||||
/**
|
||||
* 可操作校区
|
||||
*/
|
||||
@ -139,7 +140,7 @@ public class AdminUserDetails implements UserDetails, IUser, AuthorizedUserDetai
|
||||
@Override
|
||||
@JsonIgnore
|
||||
public boolean isCredentialsNonExpired() {
|
||||
return null == validDate || validDate.after(new Date());
|
||||
return null == validDate || validDate.isBefore(LocalDateTime.now());
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
|
@ -21,7 +21,7 @@ import org.springframework.web.server.ServerWebExchange;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.security.Key;
|
||||
import javax.crypto.SecretKey;
|
||||
import java.time.Duration;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
@ -49,7 +49,7 @@ public class TokenProvider implements InitializingBean {
|
||||
@Resource
|
||||
private JwtProperties jwtProperties;
|
||||
|
||||
private Key key;
|
||||
private SecretKey key;
|
||||
|
||||
public TokenProvider(JwtProperties jwtProperties) {
|
||||
this.remember = jwtProperties.isRemember();
|
||||
@ -134,11 +134,11 @@ public class TokenProvider implements InitializingBean {
|
||||
Date validity = new Date(now + duration);
|
||||
|
||||
return Jwts.builder()
|
||||
.setSubject(authentication.getName())
|
||||
.setId(UUIDUtils.generateShortUuid())
|
||||
.subject(authentication.getName())
|
||||
.id(UUIDUtils.generateShortUuid())
|
||||
.claim(AUTHORITIES_KEY, authorities)
|
||||
.signWith(key, SignatureAlgorithm.HS512)
|
||||
.setExpiration(validity)
|
||||
.signWith(key)
|
||||
.expiration(validity)
|
||||
.compact();
|
||||
}
|
||||
|
||||
@ -167,11 +167,11 @@ public class TokenProvider implements InitializingBean {
|
||||
* @return 结果
|
||||
*/
|
||||
public Claims parseToken(String token) {
|
||||
return Jwts.parserBuilder()
|
||||
.setSigningKey(key)
|
||||
return Jwts.parser()
|
||||
.decryptWith(key)
|
||||
.build()
|
||||
.parseClaimsJws(token)
|
||||
.getBody();
|
||||
.parseEncryptedClaims(token)
|
||||
.getPayload();
|
||||
}
|
||||
|
||||
private String getCacheKey(String jti) {
|
||||
|
4
lombok.config
Normal file
4
lombok.config
Normal file
@ -0,0 +1,4 @@
|
||||
config.stopBubbling = true
|
||||
lombok.tostring.callsuper=CALL
|
||||
lombok.equalsandhashcode.callsuper=CALL
|
||||
lombok.accessors.chain=false
|
2
pom.xml
2
pom.xml
@ -25,7 +25,7 @@
|
||||
<java.version>1.8</java.version>
|
||||
<jasypt.version>3.0.3</jasypt.version>
|
||||
<spring-cloud.version>Finchley.SR1</spring-cloud.version>
|
||||
<jjwt.version>0.11.0</jjwt.version>
|
||||
<jjwt.version>0.12.6</jjwt.version>
|
||||
<reflection.version>0.10.2</reflection.version>
|
||||
<r2dbc-mysql.version>1.1.3</r2dbc-mysql.version>
|
||||
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
|
||||
|
Loading…
x
Reference in New Issue
Block a user