1. 统一包名修改
This commit is contained in:
@@ -8,8 +8,8 @@ import java.util.List;
|
||||
/**
|
||||
* 只有实现了这个接口的才能自动翻译
|
||||
*
|
||||
* 为什么要赋值粘贴到 cloud-common 包下?
|
||||
* 因为 AutoTransable 属于 easy-trans-service 下,无法方便的在 cloud-module-xxx-api 模块下使用
|
||||
* 为什么要赋值粘贴到 zt-common 包下?
|
||||
* 因为 AutoTransable 属于 easy-trans-service 下,无法方便的在 zt-module-xxx-api 模块下使用
|
||||
*
|
||||
* @author jackwang
|
||||
* @since 2020-05-19 10:26:15
|
||||
|
||||
@@ -7,7 +7,7 @@ import lombok.Data;
|
||||
@Data
|
||||
public class DictDataRespDTO {
|
||||
|
||||
@Schema(description = "字典标签", requiredMode = Schema.RequiredMode.REQUIRED, example = "ZT")
|
||||
@Schema(description = "字典标签", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
|
||||
private String label;
|
||||
|
||||
@Schema(description = "字典值", requiredMode = Schema.RequiredMode.REQUIRED, example = "iocoder")
|
||||
|
||||
@@ -28,7 +28,7 @@ public class OperateLogCreateReqDTO {
|
||||
@NotNull(message = "操作模块业务编号不能为空")
|
||||
private Long bizId;
|
||||
@Schema(description = "操作内容", requiredMode = Schema.RequiredMode.REQUIRED,
|
||||
example = "修改编号为 1 的用户信息,将性别从男改成女,将姓名从ZT改成源码")
|
||||
example = "修改编号为 1 的用户信息,将性别从男改成女,将姓名从芋道改成源码")
|
||||
@NotEmpty(message = "操作内容不能为空")
|
||||
private String action;
|
||||
@Schema(description = "拓展字段", example = "{\"orderId\": \"1\"}")
|
||||
|
||||
@@ -44,7 +44,7 @@ public interface OAuth2TokenCommonApi {
|
||||
@Operation(summary = "刷新访问令牌")
|
||||
@Parameters({
|
||||
@Parameter(name = "refreshToken", description = "刷新令牌", required = true, example = "haha"),
|
||||
@Parameter(name = "clientId", description = "客户端编号", required = true, example = "cloudyuanma")
|
||||
@Parameter(name = "clientId", description = "客户端编号", required = true, example = "ztyuanma")
|
||||
})
|
||||
CommonResult<OAuth2AccessTokenRespDTO> refreshAccessToken(@RequestParam("refreshToken") String refreshToken,
|
||||
@RequestParam("clientId") String clientId);
|
||||
|
||||
@@ -18,7 +18,7 @@ public class OAuth2AccessTokenCheckRespDTO implements Serializable {
|
||||
@Schema(description = "用户类型,参见 UserTypeEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
private Integer userType;
|
||||
|
||||
@Schema(description = "用户信息", example = "{\"nickname\": \"ZT\"}")
|
||||
@Schema(description = "用户信息", example = "{\"nickname\": \"芋道\"}")
|
||||
private Map<String, String> userInfo;
|
||||
|
||||
@Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
|
||||
|
||||
@@ -22,7 +22,7 @@ public class OAuth2AccessTokenCreateReqDTO implements Serializable {
|
||||
@InEnum(value = UserTypeEnum.class, message = "用户类型必须是 {value}")
|
||||
private Integer userType;
|
||||
|
||||
@Schema(description = "客户端编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "cloudyuanma")
|
||||
@Schema(description = "客户端编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "ztyuanma")
|
||||
@NotNull(message = "客户端编号不能为空")
|
||||
private String clientId;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.zt.plat.framework.common.enums;
|
||||
/**
|
||||
* RPC 相关的枚举
|
||||
*
|
||||
* 虽然放在 cloud-spring-boot-starter-rpc 会相对合适,但是每个 API 模块需要使用到,所以暂时只好放在此处
|
||||
* 虽然放在 zt-spring-boot-starter-rpc 会相对合适,但是每个 API 模块需要使用到,所以暂时只好放在此处
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/Validation/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/Validation/?zt>
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.zt.plat.framework.business.config;
|
||||
import com.zt.plat.framework.business.filter.FileUploadFilter;
|
||||
import com.zt.plat.framework.business.interceptor.BusinessHeaderInterceptor;
|
||||
import com.zt.plat.framework.business.interceptor.FileUploadHeaderInterceptor;
|
||||
import com.zt.plat.framework.web.config.CloudWebAutoConfiguration;
|
||||
import com.zt.plat.framework.web.config.ZtWebAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||
@@ -14,9 +14,9 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
/**
|
||||
* @author chenbowen
|
||||
*/
|
||||
@AutoConfiguration(after = CloudWebAutoConfiguration.class)
|
||||
@AutoConfiguration(after = ZtWebAutoConfiguration.class)
|
||||
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
|
||||
public class CloudBusinessAutoConfiguration implements WebMvcConfigurer {
|
||||
public class ZtBusinessAutoConfiguration implements WebMvcConfigurer {
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
// 只拦截增删改和 set 相关的 url
|
||||
@@ -9,5 +9,5 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
*/
|
||||
@AutoConfiguration
|
||||
@EnableFeignClients(clients = BusinessFileApi.class)
|
||||
public class CloudBusinessRpcAutoConfiguration {
|
||||
public class ZtBusinessRpcAutoConfiguration {
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
com.zt.plat.framework.business.config.CloudBusinessAutoConfiguration
|
||||
com.zt.plat.framework.business.config.ZtBusinessAutoConfiguration
|
||||
com.zt.plat.framework.business.framework.BusinessDataPermissionConfiguration
|
||||
com.zt.plat.framework.business.framework.rpc.CloudBusinessRpcAutoConfiguration
|
||||
com.zt.plat.framework.business.framework.rpc.ZtBusinessRpcAutoConfiguration
|
||||
@@ -22,7 +22,7 @@ import java.util.List;
|
||||
@AutoConfiguration
|
||||
@ConditionalOnClass(LoginUser.class)
|
||||
@ConditionalOnBean(value = {CompanyDataPermissionRuleCustomizer.class, DeptDataPermissionRuleCustomizer.class})
|
||||
public class CloudBusinessDataPermissionAutoConfiguration {
|
||||
public class ZtBusinessDataPermissionAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public CompanyDataPermissionRule companyDataPermissionRule(List<CompanyDataPermissionRuleCustomizer> customizers) {
|
||||
@@ -19,7 +19,7 @@ import java.util.List;
|
||||
* @author ZT
|
||||
*/
|
||||
@AutoConfiguration
|
||||
public class CloudDataPermissionAutoConfiguration {
|
||||
public class ZtDataPermissionAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public DataPermissionRuleFactory dataPermissionRuleFactory(List<DataPermissionRule> rules) {
|
||||
@@ -16,7 +16,7 @@ import static com.zt.plat.framework.common.enums.WebFilterOrderEnum.TENANT_CONTE
|
||||
*/
|
||||
@AutoConfiguration
|
||||
@ConditionalOnClass(name = "feign.RequestInterceptor")
|
||||
public class CloudDataPermissionRpcAutoConfiguration {
|
||||
public class ZtDataPermissionRpcAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public DataPermissionRequestInterceptor dataPermissionRequestInterceptor() {
|
||||
@@ -21,7 +21,7 @@ import java.util.List;
|
||||
@AutoConfiguration
|
||||
@ConditionalOnClass(LoginUser.class)
|
||||
@ConditionalOnBean(value = {PermissionCommonApi.class, DeptDataPermissionRuleCustomizer.class})
|
||||
public class CloudDeptDataPermissionAutoConfiguration {
|
||||
public class ZtDeptDataPermissionAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public DeptDataPermissionRule deptDataPermissionRule(PermissionCommonApi permissionApi, List<DeptDataPermissionRuleCustomizer> customizers) {
|
||||
@@ -43,7 +43,7 @@ import static java.util.Collections.singletonList;
|
||||
* 注意,使用 DeptDataPermissionRule 时,需要保证表中有 dept_id 部门编号的字段,可自定义。
|
||||
*
|
||||
* 实际业务场景下,会存在一个经典的问题?当用户修改部门时,冗余的 dept_id 是否需要修改?
|
||||
* 1. 一般情况下,dept_id 不进行修改,则会导致用户看不到之前的数据。【cloud-server 采用该方案】
|
||||
* 1. 一般情况下,dept_id 不进行修改,则会导致用户看不到之前的数据。【zt-server 采用该方案】
|
||||
* 2. 部分情况下,希望该用户还是能看到之前的数据,则有两种方式解决:【需要你改造该 DeptDataPermissionRule 的实现代码】
|
||||
* 1)编写洗数据的脚本,将 dept_id 修改成新部门的编号;【建议】
|
||||
* 最终过滤条件是 WHERE dept_id = ?
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
com.zt.plat.framework.datapermission.config.CloudDataPermissionAutoConfiguration
|
||||
com.zt.plat.framework.datapermission.config.CloudDeptDataPermissionAutoConfiguration
|
||||
com.zt.plat.framework.datapermission.config.CloudBusinessDataPermissionAutoConfiguration
|
||||
com.zt.plat.framework.datapermission.config.CloudDataPermissionRpcAutoConfiguration
|
||||
com.zt.plat.framework.datapermission.config.ZtDataPermissionAutoConfiguration
|
||||
com.zt.plat.framework.datapermission.config.ZtDeptDataPermissionAutoConfiguration
|
||||
com.zt.plat.framework.datapermission.config.ZtBusinessDataPermissionAutoConfiguration
|
||||
com.zt.plat.framework.datapermission.config.ZtDataPermissionRpcAutoConfiguration
|
||||
|
||||
@@ -20,7 +20,7 @@ import java.util.List;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ToString(exclude = {"parent"}) // 参见 https://gitee.com/cloudcode/cloud-cloud-mini/pulls/2 原因
|
||||
@ToString(exclude = {"parent"}) // 参见 https://gitee.com/ztcode/zt-cloud-mini/pulls/2 原因
|
||||
public class Area {
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,7 +12,7 @@ import java.util.Set;
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
@ConfigurationProperties(prefix = "cloud.tenant")
|
||||
@ConfigurationProperties(prefix = "zt.tenant")
|
||||
@Data
|
||||
public class TenantProperties {
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.zt.plat.framework.common.biz.system.tenant.TenantCommonApi;
|
||||
import com.zt.plat.framework.common.enums.WebFilterOrderEnum;
|
||||
import com.zt.plat.framework.mybatis.core.util.MyBatisUtils;
|
||||
import com.zt.plat.framework.redis.config.CloudCacheProperties;
|
||||
import com.zt.plat.framework.redis.config.ZtCacheProperties;
|
||||
import com.zt.plat.framework.security.core.service.SecurityFrameworkService;
|
||||
import com.zt.plat.framework.tenant.core.aop.TenantIgnore;
|
||||
import com.zt.plat.framework.tenant.core.aop.TenantIgnoreAspect;
|
||||
@@ -53,16 +53,16 @@ import java.util.Objects;
|
||||
import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList;
|
||||
|
||||
@AutoConfiguration
|
||||
@ConditionalOnProperty(prefix = "cloud.tenant", value = "enable", matchIfMissing = true) // 允许使用 cloud.tenant.enable=false 禁用多租户
|
||||
@ConditionalOnProperty(prefix = "zt.tenant", value = "enable", matchIfMissing = true) // 允许使用 zt.tenant.enable=false 禁用多租户
|
||||
@EnableConfigurationProperties(TenantProperties.class)
|
||||
public class CloudTenantAutoConfiguration {
|
||||
public class ZtTenantAutoConfiguration {
|
||||
|
||||
@Resource
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
@Bean
|
||||
public TenantFrameworkService tenantFrameworkService(TenantCommonApi tenantApi) {
|
||||
// 参见 https://gitee.com/zhijiantianya/cloud-cloud/issues/IC6YZF
|
||||
// 参见 https://gitee.com/zhijiantianya/zt-cloud/issues/IC6YZF
|
||||
try {
|
||||
TenantCommonApi tenantApiImpl = SpringUtil.getBean("tenantApiImpl", TenantCommonApi.class);
|
||||
if (tenantApiImpl != null) {
|
||||
@@ -221,12 +221,12 @@ public class CloudTenantAutoConfiguration {
|
||||
@Primary // 引入租户时,tenantRedisCacheManager 为主 Bean
|
||||
public RedisCacheManager tenantRedisCacheManager(RedisTemplate<String, Object> redisTemplate,
|
||||
RedisCacheConfiguration redisCacheConfiguration,
|
||||
CloudCacheProperties cloudCacheProperties,
|
||||
ZtCacheProperties ztCacheProperties,
|
||||
TenantProperties tenantProperties) {
|
||||
// 创建 RedisCacheWriter 对象
|
||||
RedisConnectionFactory connectionFactory = Objects.requireNonNull(redisTemplate.getConnectionFactory());
|
||||
RedisCacheWriter cacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory,
|
||||
BatchStrategies.scan(cloudCacheProperties.getRedisScanBatchSize()));
|
||||
BatchStrategies.scan(ztCacheProperties.getRedisScanBatchSize()));
|
||||
// 创建 TenantRedisCacheManager 对象
|
||||
return new TenantRedisCacheManager(cacheWriter, redisCacheConfiguration, tenantProperties.getIgnoreCaches());
|
||||
}
|
||||
@@ -8,9 +8,9 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
@AutoConfiguration
|
||||
@ConditionalOnProperty(prefix = "cloud.tenant", value = "enable", matchIfMissing = true) // 允许使用 cloud.tenant.enable=false 禁用多租户
|
||||
@ConditionalOnProperty(prefix = "zt.tenant", value = "enable", matchIfMissing = true) // 允许使用 zt.tenant.enable=false 禁用多租户
|
||||
@EnableFeignClients(clients = TenantCommonApi.class) // 主要是引入相关的 API 服务
|
||||
public class CloudTenantRpcAutoConfiguration {
|
||||
public class ZtTenantRpcAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public TenantRequestInterceptor tenantRequestInterceptor() {
|
||||
@@ -66,7 +66,7 @@ public class TenantDatabaseInterceptor implements TenantLineHandler {
|
||||
}
|
||||
|
||||
private boolean computeIgnoreTable(String tableName) {
|
||||
// 找不到的表,说明不是 cloud 项目里的,不进行拦截(忽略租户)
|
||||
// 找不到的表,说明不是 zt 项目里的,不进行拦截(忽略租户)
|
||||
TableInfo tableInfo = TableInfoHelper.getTableInfo(tableName);
|
||||
if (tableInfo == null) {
|
||||
return true;
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
* 6. MQ:在 Producer 发送消息时,Header 带上 tenant-id 租户编号;在 Consumer 消费消息时,将 Header 的 tenant-id 租户编号,添加到租户上下文。
|
||||
* 7. Async:异步需要保证 ThreadLocal 的传递性,通过使用阿里开源的 TransmittableThreadLocal 实现。相关的改造点,可见:
|
||||
* 1)Spring Async:
|
||||
* {@link com.zt.plat.framework.quartz.config.CloudAsyncAutoConfiguration#threadPoolTaskExecutorBeanPostProcessor()}
|
||||
* {@link com.zt.plat.framework.quartz.config.ZtAsyncAutoConfiguration#threadPoolTaskExecutorBeanPostProcessor()}
|
||||
* 2)Spring Security:
|
||||
* TransmittableThreadLocalSecurityContextHolderStrategy
|
||||
* 和 CloudSecurityAutoConfiguration#securityContextHolderMethodInvokingFactoryBean() 方法
|
||||
* 和 ZtSecurityAutoConfiguration#securityContextHolderMethodInvokingFactoryBean() 方法
|
||||
*
|
||||
*/
|
||||
package com.zt.plat.framework.tenant;
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
com.zt.plat.framework.tenant.config.CloudTenantRpcAutoConfiguration
|
||||
com.zt.plat.framework.tenant.config.CloudTenantAutoConfiguration
|
||||
com.zt.plat.framework.tenant.config.ZtTenantRpcAutoConfiguration
|
||||
com.zt.plat.framework.tenant.config.ZtTenantAutoConfiguration
|
||||
|
||||
@@ -13,7 +13,7 @@ import static com.zt.plat.framework.env.core.util.EnvUtils.HOST_NAME_VALUE;
|
||||
|
||||
/**
|
||||
* 多环境的 {@link EnvEnvironmentPostProcessor} 实现类
|
||||
* 将 cloud.env.tag 设置到 nacos 等组件对应的 tag 配置项,当且仅当它们不存在时
|
||||
* 将 zt.env.tag 设置到 nacos 等组件对应的 tag 配置项,当且仅当它们不存在时
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
@@ -32,7 +32,7 @@ public class EnvEnvironmentPostProcessor implements EnvironmentPostProcessor {
|
||||
environment.getSystemProperties().put(hostNameKey, EnvUtils.getHostName());
|
||||
}
|
||||
|
||||
// 1.1 如果没有 cloud.env.tag 配置项,则不进行配置项的修改
|
||||
// 1.1 如果没有 zt.env.tag 配置项,则不进行配置项的修改
|
||||
String tag = EnvUtils.getTag(environment);
|
||||
if (StrUtil.isEmpty(tag)) {
|
||||
return;
|
||||
|
||||
@@ -8,11 +8,11 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
@ConfigurationProperties(prefix = "cloud.env")
|
||||
@ConfigurationProperties(prefix = "zt.env")
|
||||
@Data
|
||||
public class EnvProperties {
|
||||
|
||||
public static final String TAG_KEY = "cloud.env.tag";
|
||||
public static final String TAG_KEY = "zt.env.tag";
|
||||
|
||||
/**
|
||||
* 环境标签
|
||||
|
||||
@@ -21,7 +21,7 @@ import java.util.List;
|
||||
*/
|
||||
@AutoConfiguration
|
||||
@EnableConfigurationProperties(EnvProperties.class)
|
||||
public class CloudEnvRpcAutoConfiguration {
|
||||
public class ZtEnvRpcAutoConfiguration {
|
||||
|
||||
// ========== Feign 相关 ==========
|
||||
|
||||
@@ -16,7 +16,7 @@ import org.springframework.context.annotation.Bean;
|
||||
@AutoConfiguration
|
||||
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
|
||||
@EnableConfigurationProperties(EnvProperties.class)
|
||||
public class CloudEnvWebAutoConfiguration {
|
||||
public class ZtEnvWebAutoConfiguration {
|
||||
|
||||
/**
|
||||
* 创建 {@link EnvWebFilter} Bean
|
||||
@@ -1,2 +1,2 @@
|
||||
com.zt.plat.framework.env.config.CloudEnvWebAutoConfiguration
|
||||
com.zt.plat.framework.env.config.CloudEnvRpcAutoConfiguration
|
||||
com.zt.plat.framework.env.config.ZtEnvWebAutoConfiguration
|
||||
com.zt.plat.framework.env.config.ZtEnvRpcAutoConfiguration
|
||||
|
||||
@@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
@AutoConfiguration
|
||||
public class CloudDictAutoConfiguration {
|
||||
public class ZtDictAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@SuppressWarnings("InstantiationOfUtilityClass")
|
||||
@@ -11,5 +11,5 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
*/
|
||||
@AutoConfiguration
|
||||
@EnableFeignClients(clients = DictDataCommonApi.class) // 主要是引入相关的 API 服务
|
||||
public class CloudDictRpcAutoConfiguration {
|
||||
public class ZtDictRpcAutoConfiguration {
|
||||
}
|
||||
@@ -1,2 +1,2 @@
|
||||
com.zt.plat.framework.dict.config.CloudDictRpcAutoConfiguration
|
||||
com.zt.plat.framework.dict.config.CloudDictAutoConfiguration
|
||||
com.zt.plat.framework.dict.config.ZtDictRpcAutoConfiguration
|
||||
com.zt.plat.framework.dict.config.ZtDictAutoConfiguration
|
||||
|
||||
@@ -14,7 +14,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
*/
|
||||
@AutoConfiguration
|
||||
@EnableAsync
|
||||
public class CloudAsyncAutoConfiguration {
|
||||
public class ZtAsyncAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public BeanPostProcessor threadPoolTaskExecutorBeanPostProcessor() {
|
||||
@@ -23,7 +23,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
@EnableConfigurationProperties({XxlJobProperties.class})
|
||||
@EnableScheduling // 开启 Spring 自带的定时任务
|
||||
@Slf4j
|
||||
public class CloudXxlJobAutoConfiguration {
|
||||
public class ZtXxlJobAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
@@ -1,2 +1,2 @@
|
||||
com.zt.plat.framework.quartz.config.CloudXxlJobAutoConfiguration
|
||||
com.zt.plat.framework.quartz.config.CloudAsyncAutoConfiguration
|
||||
com.zt.plat.framework.quartz.config.ZtXxlJobAutoConfiguration
|
||||
com.zt.plat.framework.quartz.config.ZtAsyncAutoConfiguration
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/Job/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/Job/?zt>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/Async-Job/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/Async-Job/?zt>
|
||||
|
||||
@@ -8,7 +8,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
*
|
||||
* @author 麻薯
|
||||
*/
|
||||
@ConfigurationProperties("cloud.tracer")
|
||||
@ConfigurationProperties("zt.tracer")
|
||||
@Data
|
||||
public class TracerProperties {
|
||||
}
|
||||
|
||||
@@ -16,8 +16,8 @@ import org.springframework.context.annotation.Configuration;
|
||||
*/
|
||||
@AutoConfiguration
|
||||
@ConditionalOnClass({MeterRegistryCustomizer.class})
|
||||
@ConditionalOnProperty(prefix = "cloud.metrics", value = "enable", matchIfMissing = true) // 允许使用 cloud.metrics.enable=false 禁用 Metrics
|
||||
public class CloudMetricsAutoConfiguration {
|
||||
@ConditionalOnProperty(prefix = "zt.metrics", value = "enable", matchIfMissing = true) // 允许使用 zt.metrics.enable=false 禁用 Metrics
|
||||
public class ZtMetricsAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public MeterRegistryCustomizer<MeterRegistry> metricsCommonTags(
|
||||
@@ -18,8 +18,8 @@ import org.springframework.context.annotation.Bean;
|
||||
@AutoConfiguration
|
||||
@ConditionalOnClass(value = {BizTraceAspect.class}, name = "jakarta.servlet.Filter")
|
||||
@EnableConfigurationProperties(TracerProperties.class)
|
||||
@ConditionalOnProperty(prefix = "cloud.tracer", value = "enable", matchIfMissing = true)
|
||||
public class CloudTracerAutoConfiguration {
|
||||
@ConditionalOnProperty(prefix = "zt.tracer", value = "enable", matchIfMissing = true)
|
||||
public class ZtTracerAutoConfiguration {
|
||||
|
||||
// TODO @芋艿:重要。目前 opentracing 版本存在冲突,要么保证 skywalking,要么保证阿里云短信 sdk
|
||||
// @Bean
|
||||
@@ -1,2 +1,2 @@
|
||||
com.zt.plat.framework.tracer.config.CloudTracerAutoConfiguration
|
||||
com.zt.plat.framework.tracer.config.CloudMetricsAutoConfiguration
|
||||
com.zt.plat.framework.tracer.config.ZtTracerAutoConfiguration
|
||||
com.zt.plat.framework.tracer.config.ZtMetricsAutoConfiguration
|
||||
|
||||
@@ -1 +1 @@
|
||||
<https://www.iocoder.cn/Spring-Boot/Admin/?cloud>
|
||||
<https://www.iocoder.cn/Spring-Boot/Admin/?zt>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<https://www.iocoder.cn/Spring-Boot/Actuator/?cloud>
|
||||
<https://www.iocoder.cn/Spring-Boot/Actuator/?zt>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/SkyWalking/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/SkyWalking/?zt>
|
||||
|
||||
@@ -15,7 +15,7 @@ import org.springframework.context.annotation.Bean;
|
||||
@AutoConfiguration
|
||||
@Slf4j
|
||||
@ConditionalOnClass(name = "org.springframework.amqp.rabbit.core.RabbitTemplate")
|
||||
public class CloudRabbitMQAutoConfiguration {
|
||||
public class ZtRabbitMQAutoConfiguration {
|
||||
|
||||
/**
|
||||
* Jackson2JsonMessageConverter Bean:使用 jackson 序列化消息
|
||||
@@ -9,7 +9,7 @@ import com.zt.plat.framework.mq.redis.core.job.RedisPendingMessageResendJob;
|
||||
import com.zt.plat.framework.mq.redis.core.job.RedisStreamMessageCleanupJob;
|
||||
import com.zt.plat.framework.mq.redis.core.pubsub.AbstractRedisChannelMessageListener;
|
||||
import com.zt.plat.framework.mq.redis.core.stream.AbstractRedisStreamMessageListener;
|
||||
import com.zt.plat.framework.redis.config.CloudRedisAutoConfiguration;
|
||||
import com.zt.plat.framework.redis.config.ZtRedisAutoConfiguration;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@@ -38,8 +38,8 @@ import java.util.Properties;
|
||||
*/
|
||||
@Slf4j
|
||||
@EnableScheduling // 启用定时任务,用于 RedisPendingMessageResendJob 重发消息
|
||||
@AutoConfiguration(after = CloudRedisAutoConfiguration.class)
|
||||
public class CloudRedisMQConsumerAutoConfiguration {
|
||||
@AutoConfiguration(after = ZtRedisAutoConfiguration.class)
|
||||
public class ZtRedisMQConsumerAutoConfiguration {
|
||||
|
||||
/**
|
||||
* 创建 Redis Pub/Sub 广播消费的容器
|
||||
@@ -2,7 +2,7 @@ package com.zt.plat.framework.mq.redis.config;
|
||||
|
||||
import com.zt.plat.framework.mq.redis.core.RedisMQTemplate;
|
||||
import com.zt.plat.framework.mq.redis.core.interceptor.RedisMessageInterceptor;
|
||||
import com.zt.plat.framework.redis.config.CloudRedisAutoConfiguration;
|
||||
import com.zt.plat.framework.redis.config.ZtRedisAutoConfiguration;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
@@ -16,8 +16,8 @@ import java.util.List;
|
||||
* @author ZT
|
||||
*/
|
||||
@Slf4j
|
||||
@AutoConfiguration(after = CloudRedisAutoConfiguration.class)
|
||||
public class CloudRedisMQProducerAutoConfiguration {
|
||||
@AutoConfiguration(after = ZtRedisAutoConfiguration.class)
|
||||
public class ZtRedisMQProducerAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public RedisMQTemplate redisMQTemplate(StringRedisTemplate redisTemplate,
|
||||
@@ -1,3 +1,3 @@
|
||||
com.zt.plat.framework.mq.redis.config.CloudRedisMQProducerAutoConfiguration
|
||||
com.zt.plat.framework.mq.redis.config.CloudRedisMQConsumerAutoConfiguration
|
||||
com.zt.plat.framework.mq.rabbitmq.config.CloudRabbitMQAutoConfiguration
|
||||
com.zt.plat.framework.mq.redis.config.ZtRedisMQProducerAutoConfiguration
|
||||
com.zt.plat.framework.mq.redis.config.ZtRedisMQConsumerAutoConfiguration
|
||||
com.zt.plat.framework.mq.rabbitmq.config.ZtRabbitMQAutoConfiguration
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/RocketMQ/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/RocketMQ/?zt>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/Kafka/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/Kafka/?zt>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/RabbitMQ/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/RabbitMQ/?zt>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/RocketMQ/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/RocketMQ/?zt>
|
||||
|
||||
@@ -20,7 +20,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
@EnableTransactionManagement(proxyTargetClass = true) // 启动事务管理
|
||||
@EnableConfigurationProperties(DruidStatProperties.class)
|
||||
@EnableFeignClients(clients = SequenceCommonApi.class)
|
||||
public class CloudDataSourceAutoConfiguration {
|
||||
public class ZtDataSourceAutoConfiguration {
|
||||
|
||||
/**
|
||||
* 创建 DruidAdRemoveFilter 过滤器,过滤 common.js 的广告
|
||||
@@ -26,9 +26,9 @@ import java.util.concurrent.TimeUnit;
|
||||
* @author ZT
|
||||
*/
|
||||
@AutoConfiguration(before = MybatisPlusAutoConfiguration.class) // 目的:先于 MyBatis Plus 自动配置,避免 @MapperScan 可能扫描不到 Mapper 打印 warn 日志
|
||||
@MapperScan(value = "${cloud.info.base-package}", annotationClass = Mapper.class,
|
||||
@MapperScan(value = "${zt.info.base-package}", annotationClass = Mapper.class,
|
||||
lazyInitialization = "${mybatis.lazy-initialization:false}") // Mapper 懒加载,目前仅用于单元测试
|
||||
public class CloudMybatisAutoConfiguration {
|
||||
public class ZtMybatisAutoConfiguration {
|
||||
|
||||
static {
|
||||
// 动态 SQL 智能优化支持本地缓存加速解析,更完善的租户复杂 XML 动态 SQL 支持,静态注入缓存
|
||||
@@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
@AutoConfiguration
|
||||
public class CloudTranslateAutoConfiguration {
|
||||
public class ZtTranslateAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@SuppressWarnings({"InstantiationOfUtilityClass", "SpringJavaInjectionPointsAutowiringInspection"})
|
||||
@@ -1,3 +1,3 @@
|
||||
com.zt.plat.framework.datasource.config.CloudDataSourceAutoConfiguration
|
||||
com.zt.plat.framework.mybatis.config.CloudMybatisAutoConfiguration
|
||||
com.zt.plat.framework.translate.config.CloudTranslateAutoConfiguration
|
||||
com.zt.plat.framework.datasource.config.ZtDataSourceAutoConfiguration
|
||||
com.zt.plat.framework.mybatis.config.ZtMybatisAutoConfiguration
|
||||
com.zt.plat.framework.translate.config.ZtTranslateAutoConfiguration
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/MyBatis/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/MyBatis/?zt>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/dynamic-datasource/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/dynamic-datasource/?zt>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/datasource-pool/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/datasource-pool/?zt>
|
||||
|
||||
@@ -7,14 +7,14 @@ import com.zt.plat.framework.idempotent.core.keyresolver.IdempotentKeyResolver;
|
||||
import com.zt.plat.framework.idempotent.core.keyresolver.impl.UserIdempotentKeyResolver;
|
||||
import com.zt.plat.framework.idempotent.core.redis.IdempotentRedisDAO;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import com.zt.plat.framework.redis.config.CloudRedisAutoConfiguration;
|
||||
import com.zt.plat.framework.redis.config.ZtRedisAutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@AutoConfiguration(after = CloudRedisAutoConfiguration.class)
|
||||
public class CloudIdempotentConfiguration {
|
||||
@AutoConfiguration(after = ZtRedisAutoConfiguration.class)
|
||||
public class ZtIdempotentConfiguration {
|
||||
|
||||
@Bean
|
||||
public IdempotentAspect idempotentAspect(List<IdempotentKeyResolver> keyResolvers, IdempotentRedisDAO idempotentRedisDAO) {
|
||||
@@ -8,7 +8,7 @@ import org.springframework.context.annotation.Bean;
|
||||
|
||||
@AutoConfiguration(before = LockAutoConfiguration.class)
|
||||
@ConditionalOnClass(name = "com.baomidou.lock.annotation.Lock4j")
|
||||
public class CloudLock4jConfiguration {
|
||||
public class ZtLock4jConfiguration {
|
||||
|
||||
@Bean
|
||||
public DefaultLockFailureStrategy lockFailureStrategy() {
|
||||
@@ -4,15 +4,15 @@ import com.zt.plat.framework.ratelimiter.core.aop.RateLimiterAspect;
|
||||
import com.zt.plat.framework.ratelimiter.core.keyresolver.RateLimiterKeyResolver;
|
||||
import com.zt.plat.framework.ratelimiter.core.keyresolver.impl.*;
|
||||
import com.zt.plat.framework.ratelimiter.core.redis.RateLimiterRedisDAO;
|
||||
import com.zt.plat.framework.redis.config.CloudRedisAutoConfiguration;
|
||||
import com.zt.plat.framework.redis.config.ZtRedisAutoConfiguration;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@AutoConfiguration(after = CloudRedisAutoConfiguration.class)
|
||||
public class CloudRateLimiterConfiguration {
|
||||
@AutoConfiguration(after = ZtRedisAutoConfiguration.class)
|
||||
public class ZtRateLimiterConfiguration {
|
||||
|
||||
@Bean
|
||||
public RateLimiterAspect rateLimiterAspect(List<RateLimiterKeyResolver> keyResolvers, RateLimiterRedisDAO rateLimiterRedisDAO) {
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.zt.plat.framework.signature.config;
|
||||
|
||||
import com.zt.plat.framework.redis.config.CloudRedisAutoConfiguration;
|
||||
import com.zt.plat.framework.redis.config.ZtRedisAutoConfiguration;
|
||||
import com.zt.plat.framework.signature.core.aop.ApiSignatureAspect;
|
||||
import com.zt.plat.framework.signature.core.redis.ApiSignatureRedisDAO;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
@@ -12,8 +12,8 @@ import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
*
|
||||
* @author Zhougang
|
||||
*/
|
||||
@AutoConfiguration(after = CloudRedisAutoConfiguration.class)
|
||||
public class CloudApiSignatureAutoConfiguration {
|
||||
@AutoConfiguration(after = ZtRedisAutoConfiguration.class)
|
||||
public class ZtApiSignatureAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public ApiSignatureAspect signatureAspect(ApiSignatureRedisDAO signatureRedisDAO) {
|
||||
@@ -1,4 +1,4 @@
|
||||
com.zt.plat.framework.idempotent.config.CloudIdempotentConfiguration
|
||||
com.zt.plat.framework.lock4j.config.CloudLock4jConfiguration
|
||||
com.zt.plat.framework.ratelimiter.config.CloudRateLimiterConfiguration
|
||||
com.zt.plat.framework.signature.config.CloudApiSignatureAutoConfiguration
|
||||
com.zt.plat.framework.idempotent.config.ZtIdempotentConfiguration
|
||||
com.zt.plat.framework.lock4j.config.ZtLock4jConfiguration
|
||||
com.zt.plat.framework.ratelimiter.config.ZtRateLimiterConfiguration
|
||||
com.zt.plat.framework.signature.config.ZtApiSignatureAutoConfiguration
|
||||
@@ -19,15 +19,15 @@ import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.zt.plat.framework.redis.config.CloudRedisAutoConfiguration.buildRedisSerializer;
|
||||
import static com.zt.plat.framework.redis.config.ZtRedisAutoConfiguration.buildRedisSerializer;
|
||||
|
||||
/**
|
||||
* Cache 配置类,基于 Redis 实现
|
||||
*/
|
||||
@AutoConfiguration
|
||||
@EnableConfigurationProperties({CacheProperties.class, CloudCacheProperties.class})
|
||||
@EnableConfigurationProperties({CacheProperties.class, ZtCacheProperties.class})
|
||||
@EnableCaching
|
||||
public class CloudCacheAutoConfiguration {
|
||||
public class ZtCacheAutoConfiguration {
|
||||
|
||||
/**
|
||||
* RedisCacheConfiguration Bean
|
||||
@@ -40,7 +40,7 @@ public class CloudCacheAutoConfiguration {
|
||||
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
|
||||
// 设置使用 : 单冒号,而不是双 :: 冒号,避免 Redis Desktop Manager 多余空格
|
||||
// 详细可见 https://blog.csdn.net/chuixue24/article/details/103928965 博客
|
||||
// 再次修复单冒号,而不是双 :: 冒号问题,Issues 详情:https://gitee.com/zhijiantianya/cloud-cloud/issues/I86VY2
|
||||
// 再次修复单冒号,而不是双 :: 冒号问题,Issues 详情:https://gitee.com/zhijiantianya/zt-cloud/issues/I86VY2
|
||||
config = config.computePrefixWith(cacheName -> {
|
||||
String keyPrefix = cacheProperties.getRedis().getKeyPrefix();
|
||||
if (StringUtils.hasText(keyPrefix)) {
|
||||
@@ -70,11 +70,11 @@ public class CloudCacheAutoConfiguration {
|
||||
@Bean
|
||||
public RedisCacheManager redisCacheManager(RedisTemplate<String, Object> redisTemplate,
|
||||
RedisCacheConfiguration redisCacheConfiguration,
|
||||
CloudCacheProperties cloudCacheProperties) {
|
||||
ZtCacheProperties ztCacheProperties) {
|
||||
// 创建 RedisCacheWriter 对象
|
||||
RedisConnectionFactory connectionFactory = Objects.requireNonNull(redisTemplate.getConnectionFactory());
|
||||
RedisCacheWriter cacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory,
|
||||
BatchStrategies.scan(cloudCacheProperties.getRedisScanBatchSize()));
|
||||
BatchStrategies.scan(ztCacheProperties.getRedisScanBatchSize()));
|
||||
// 创建 TenantRedisCacheManager 对象
|
||||
return new TimeoutRedisCacheManager(cacheWriter, redisCacheConfiguration);
|
||||
}
|
||||
@@ -9,10 +9,10 @@ import org.springframework.validation.annotation.Validated;
|
||||
*
|
||||
* @author Wanwan
|
||||
*/
|
||||
@ConfigurationProperties("cloud.cache")
|
||||
@ConfigurationProperties("zt.cache")
|
||||
@Data
|
||||
@Validated
|
||||
public class CloudCacheProperties {
|
||||
public class ZtCacheProperties {
|
||||
|
||||
/**
|
||||
* {@link #redisScanBatchSize} 默认值
|
||||
@@ -14,7 +14,7 @@ import org.springframework.data.redis.serializer.RedisSerializer;
|
||||
* Redis 配置类
|
||||
*/
|
||||
@AutoConfiguration(before = RedissonAutoConfigurationV2.class) // 目的:使用自己定义的 RedisTemplate Bean
|
||||
public class CloudRedisAutoConfiguration {
|
||||
public class ZtRedisAutoConfiguration {
|
||||
|
||||
/**
|
||||
* 创建 RedisTemplate Bean,使用 JSON 序列化方式
|
||||
@@ -1,2 +1,2 @@
|
||||
com.zt.plat.framework.redis.config.CloudRedisAutoConfiguration
|
||||
com.zt.plat.framework.redis.config.CloudCacheAutoConfiguration
|
||||
com.zt.plat.framework.redis.config.ZtRedisAutoConfiguration
|
||||
com.zt.plat.framework.redis.config.ZtCacheAutoConfiguration
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/Cache/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/Cache/?zt>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/Redis/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/Redis/?zt>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Boot/Feign/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Boot/Feign/?zt>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<http://www.iocoder.cn/Spring-Cloud/Feign/?cloud>
|
||||
<http://www.iocoder.cn/Spring-Cloud/Feign/?zt>
|
||||
|
||||
@@ -16,7 +16,7 @@ import org.springframework.context.annotation.Primary;
|
||||
@EnableLogRecord(tenant = "") // 貌似用不上 tenant 这玩意给个空好啦
|
||||
@AutoConfiguration
|
||||
@Slf4j
|
||||
public class CloudOperateLogConfiguration {
|
||||
public class ZtOperateLogConfiguration {
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
@@ -11,5 +11,5 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
*/
|
||||
@AutoConfiguration
|
||||
@EnableFeignClients(clients = {OperateLogCommonApi.class}) // 主要是引入相关的 API 服务
|
||||
public class CloudOperateLogRpcAutoConfiguration {
|
||||
public class ZtOperateLogRpcAutoConfiguration {
|
||||
}
|
||||
@@ -62,7 +62,7 @@ public class LogRecordServiceImpl implements ILogRecordService {
|
||||
reqDTO.setType(logRecord.getType()); // 大模块类型,例如:CRM 客户
|
||||
reqDTO.setSubType(logRecord.getSubType());// 操作名称,例如:转移客户
|
||||
reqDTO.setBizId(Long.parseLong(logRecord.getBizNo())); // 业务编号,例如:客户编号
|
||||
reqDTO.setAction(logRecord.getAction());// 操作内容,例如:修改编号为 1 的用户信息,将性别从男改成女,将姓名从ZT改成源码。
|
||||
reqDTO.setAction(logRecord.getAction());// 操作内容,例如:修改编号为 1 的用户信息,将性别从男改成女,将姓名从芋道改成源码。
|
||||
reqDTO.setExtra(logRecord.getExtra()); // 拓展字段,有些复杂的业务,需要记录一些字段 ( JSON 格式 ),例如说,记录订单编号,{ orderId: "1"}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import jakarta.validation.constraints.NotNull;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@ConfigurationProperties(prefix = "cloud.security")
|
||||
@ConfigurationProperties(prefix = "zt.security")
|
||||
@Validated
|
||||
@Data
|
||||
public class SecurityProperties {
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.springframework.security.web.access.AccessDeniedHandler;
|
||||
/**
|
||||
* Spring Security 自动配置类,主要用于相关组件的配置
|
||||
*
|
||||
* 注意,不能和 {@link CloudWebSecurityConfigurerAdapter} 用一个,原因是会导致初始化报错。
|
||||
* 注意,不能和 {@link ZtWebSecurityConfigurerAdapter} 用一个,原因是会导致初始化报错。
|
||||
* 参见 https://stackoverflow.com/questions/53847050/spring-boot-delegatebuilder-cannot-be-null-on-autowiring-authenticationmanager 文档。
|
||||
*
|
||||
* @author ZT
|
||||
@@ -32,7 +32,7 @@ import org.springframework.security.web.access.AccessDeniedHandler;
|
||||
@AutoConfiguration
|
||||
@AutoConfigureOrder(-1) // 目的:先于 Spring Security 自动配置,避免一键改包后,org.* 基础包无法生效
|
||||
@EnableConfigurationProperties(SecurityProperties.class)
|
||||
public class CloudSecurityAutoConfiguration {
|
||||
public class ZtSecurityAutoConfiguration {
|
||||
|
||||
@Resource
|
||||
private SecurityProperties securityProperties;
|
||||
@@ -15,7 +15,7 @@ import org.springframework.context.annotation.Bean;
|
||||
@AutoConfiguration
|
||||
@EnableFeignClients(clients = {OAuth2TokenCommonApi.class, // 主要是引入相关的 API 服务
|
||||
PermissionCommonApi.class})
|
||||
public class CloudSecurityRpcAutoConfiguration {
|
||||
public class ZtSecurityRpcAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public LoginUserRequestInterceptor loginUserRequestInterceptor() {
|
||||
@@ -46,7 +46,7 @@ import static com.zt.plat.framework.common.util.collection.CollectionUtils.conve
|
||||
@AutoConfiguration
|
||||
@AutoConfigureOrder(-1) // 目的:先于 Spring Security 自动配置,避免一键改包后,org.* 基础包无法生效
|
||||
@EnableMethodSecurity(securedEnabled = true)
|
||||
public class CloudWebSecurityConfigurerAdapter {
|
||||
public class ZtWebSecurityConfigurerAdapter {
|
||||
|
||||
@Resource
|
||||
private WebProperties webProperties;
|
||||
@@ -137,7 +137,7 @@ public class CloudWebSecurityConfigurerAdapter {
|
||||
.requestMatchers(HttpMethod.DELETE, permitAllUrls.get(HttpMethod.DELETE).toArray(new String[0])).permitAll()
|
||||
.requestMatchers(HttpMethod.HEAD, permitAllUrls.get(HttpMethod.HEAD).toArray(new String[0])).permitAll()
|
||||
.requestMatchers(HttpMethod.PATCH, permitAllUrls.get(HttpMethod.PATCH).toArray(new String[0])).permitAll()
|
||||
// 1.3 基于 cloud.security.permit-all-urls 无需认证
|
||||
// 1.3 基于 zt.security.permit-all-urls 无需认证
|
||||
.requestMatchers(securityProperties.getPermitAllUrls().toArray(new String[0])).permitAll()
|
||||
)
|
||||
// ②:每个项目的自定义规则
|
||||
@@ -1,5 +1,5 @@
|
||||
com.zt.plat.framework.security.config.CloudSecurityRpcAutoConfiguration
|
||||
com.zt.plat.framework.security.config.CloudSecurityAutoConfiguration
|
||||
com.zt.plat.framework.security.config.CloudWebSecurityConfigurerAdapter
|
||||
com.zt.plat.framework.operatelog.config.CloudOperateLogConfiguration
|
||||
com.zt.plat.framework.operatelog.config.CloudOperateLogRpcAutoConfiguration
|
||||
com.zt.plat.framework.security.config.ZtSecurityRpcAutoConfiguration
|
||||
com.zt.plat.framework.security.config.ZtSecurityAutoConfiguration
|
||||
com.zt.plat.framework.security.config.ZtWebSecurityConfigurerAdapter
|
||||
com.zt.plat.framework.operatelog.config.ZtOperateLogConfiguration
|
||||
com.zt.plat.framework.operatelog.config.ZtOperateLogRpcAutoConfiguration
|
||||
@@ -1,2 +1,2 @@
|
||||
* ZT Spring Security 入门:<http://www.iocoder.cn/Spring-Boot/Spring-Security/?cloud>
|
||||
* Spring Security 基本概念:<http://www.iocoder.cn/Fight/Spring-Security-4-1-0-Basic-concept-description/?cloud>
|
||||
* 芋道 Spring Security 入门:<http://www.iocoder.cn/Spring-Boot/Spring-Security/?zt>
|
||||
* Spring Security 基本概念:<http://www.iocoder.cn/Fight/Spring-Security-4-1-0-Basic-concept-description/?zt>
|
||||
|
||||
@@ -2,9 +2,9 @@ package com.zt.plat.framework.test.core.ut;
|
||||
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.zt.plat.framework.common.biz.system.sequence.SequenceCommonApi;
|
||||
import com.zt.plat.framework.datasource.config.CloudDataSourceAutoConfiguration;
|
||||
import com.zt.plat.framework.mybatis.config.CloudMybatisAutoConfiguration;
|
||||
import com.zt.plat.framework.redis.config.CloudRedisAutoConfiguration;
|
||||
import com.zt.plat.framework.datasource.config.ZtDataSourceAutoConfiguration;
|
||||
import com.zt.plat.framework.mybatis.config.ZtMybatisAutoConfiguration;
|
||||
import com.zt.plat.framework.redis.config.ZtRedisAutoConfiguration;
|
||||
import com.zt.plat.framework.test.config.RedisTestConfiguration;
|
||||
import com.zt.plat.framework.test.config.SqlInitializationTestConfiguration;
|
||||
import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
|
||||
@@ -36,18 +36,18 @@ public class BaseDbAndRedisUnitTest {
|
||||
|
||||
@Import({
|
||||
// DB 配置类
|
||||
CloudDataSourceAutoConfiguration.class, // 自己的 DB 配置类
|
||||
ZtDataSourceAutoConfiguration.class, // 自己的 DB 配置类
|
||||
DataSourceAutoConfiguration.class, // Spring DB 自动配置类
|
||||
DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类
|
||||
DruidDataSourceAutoConfigure.class, // Druid 自动配置类
|
||||
SqlInitializationTestConfiguration.class, // SQL 初始化
|
||||
// MyBatis 配置类
|
||||
CloudMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类
|
||||
ZtMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类
|
||||
MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类
|
||||
|
||||
// Redis 配置类
|
||||
RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer
|
||||
CloudRedisAutoConfiguration.class, // 自己的 Redis 配置类
|
||||
ZtRedisAutoConfiguration.class, // 自己的 Redis 配置类
|
||||
RedisAutoConfiguration.class, // Spring Redis 自动配置类
|
||||
RedissonAutoConfiguration.class, // Redisson 自动配置类
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ package com.zt.plat.framework.test.core.ut;
|
||||
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.zt.plat.framework.common.biz.system.sequence.SequenceCommonApi;
|
||||
import com.zt.plat.framework.datasource.config.CloudDataSourceAutoConfiguration;
|
||||
import com.zt.plat.framework.mybatis.config.CloudMybatisAutoConfiguration;
|
||||
import com.zt.plat.framework.datasource.config.ZtDataSourceAutoConfiguration;
|
||||
import com.zt.plat.framework.mybatis.config.ZtMybatisAutoConfiguration;
|
||||
import com.zt.plat.framework.test.config.SqlInitializationTestConfiguration;
|
||||
import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
|
||||
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
|
||||
@@ -37,13 +37,13 @@ public class BaseDbUnitTest {
|
||||
|
||||
@Import({
|
||||
// DB 配置类
|
||||
CloudDataSourceAutoConfiguration.class, // 自己的 DB 配置类
|
||||
ZtDataSourceAutoConfiguration.class, // 自己的 DB 配置类
|
||||
DataSourceAutoConfiguration.class, // Spring DB 自动配置类
|
||||
DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类
|
||||
DruidDataSourceAutoConfigure.class, // Druid 自动配置类
|
||||
SqlInitializationTestConfiguration.class, // SQL 初始化
|
||||
// MyBatis 配置类
|
||||
CloudMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类
|
||||
ZtMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类
|
||||
MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类
|
||||
MybatisPlusJoinAutoConfiguration.class, // MyBatis 的Join配置类
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ public abstract class BaseGenerator {
|
||||
System.out.print(prompt);
|
||||
input.put("names", scanner.nextLine());
|
||||
|
||||
System.out.print("请输入作者名称(例如:cloud): ");
|
||||
System.out.print("请输入作者名称(例如:zt): ");
|
||||
input.put("author", scanner.nextLine());
|
||||
|
||||
System.out.print("请输入起始端口号(例如:8080): ");
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.zt.plat.framework.test.core.ut;
|
||||
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.zt.plat.framework.common.biz.system.sequence.SequenceCommonApi;
|
||||
import com.zt.plat.framework.redis.config.CloudRedisAutoConfiguration;
|
||||
import com.zt.plat.framework.redis.config.ZtRedisAutoConfiguration;
|
||||
import com.zt.plat.framework.test.config.RedisTestConfiguration;
|
||||
import org.redisson.spring.starter.RedissonAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
|
||||
@@ -33,7 +33,7 @@ public class BaseRedisUnitTest {
|
||||
// Redis 配置类
|
||||
RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer
|
||||
RedisAutoConfiguration.class, // Spring Redis 自动配置类
|
||||
CloudRedisAutoConfiguration.class, // 自己的 Redis 配置类
|
||||
ZtRedisAutoConfiguration.class, // 自己的 Redis 配置类
|
||||
RedissonAutoConfiguration.class, // Redisson 自动配置类
|
||||
|
||||
// 其它配置类
|
||||
|
||||
@@ -8,12 +8,12 @@ import java.util.Map;
|
||||
import static com.zt.plat.framework.test.core.ut.GeneratorUtils.camelToKebabCase;
|
||||
|
||||
/**
|
||||
* Cloud 模块代码生成器 - 使用 VM 模板
|
||||
* Zt 模块代码生成器 - 使用 VM 模板
|
||||
*
|
||||
* 使用方法:
|
||||
* 1. 在 IDE 中,右键运行 {@link #main(String[])} 方法
|
||||
* 2. 根据提示,输入模块名,例如 "order"
|
||||
* 3. 根据提示,输入作者名,例如 "cloud"
|
||||
* 3. 根据提示,输入作者名,例如 "zt"
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
@@ -36,7 +36,7 @@ public class ModuleGenerator extends BaseGenerator {
|
||||
generator.batchCreate(modules, author, startPort, "模块");
|
||||
|
||||
// 3. 输出完成信息
|
||||
printCompletionInfo(modules, "模块", "cloud-module-{name}");
|
||||
printCompletionInfo(modules, "模块", "zt-module-{name}");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -45,7 +45,7 @@ public class ModuleGenerator extends BaseGenerator {
|
||||
String dashModuleName = camelToKebabCase(moduleName);
|
||||
|
||||
// 定义新模块路径
|
||||
Path newModuleDir = projectRoot.resolve("cloud-module-" + dashModuleName);
|
||||
Path newModuleDir = projectRoot.resolve("zt-module-" + dashModuleName);
|
||||
|
||||
if (checkDirectoryExists(newModuleDir, dashModuleName)) {
|
||||
return;
|
||||
@@ -83,7 +83,7 @@ public class ModuleGenerator extends BaseGenerator {
|
||||
moduleDir.resolve("pom.xml"), variables);
|
||||
|
||||
// 2. 创建 API 模块
|
||||
Path apiDir = moduleDir.resolve("cloud-module-" + dashModuleName + "-api");
|
||||
Path apiDir = moduleDir.resolve("zt-module-" + dashModuleName + "-api");
|
||||
Files.createDirectories(apiDir);
|
||||
|
||||
// API 模块的 Java 源码目录
|
||||
@@ -103,7 +103,7 @@ public class ModuleGenerator extends BaseGenerator {
|
||||
enumsDir.resolve("ErrorCodeConstants.java"), variables);
|
||||
|
||||
// 3. 创建 Server 模块
|
||||
Path serverDir = moduleDir.resolve("cloud-module-" + dashModuleName + "-server");
|
||||
Path serverDir = moduleDir.resolve("zt-module-" + dashModuleName + "-server");
|
||||
Files.createDirectories(serverDir);
|
||||
|
||||
// Server 模块的 Java 源码目录
|
||||
|
||||
@@ -8,12 +8,12 @@ import java.util.Map;
|
||||
import static com.zt.plat.framework.test.core.ut.GeneratorUtils.toPascalCase;
|
||||
|
||||
/**
|
||||
* Cloud Server 代码生成器 - 使用 VM 模板
|
||||
* Zt Server 代码生成器 - 使用 VM 模板
|
||||
*
|
||||
* 使用方法:
|
||||
* 1. 在 IDE 中,右键运行 {@link #main(String[])} 方法
|
||||
* 2. 根据提示,输入新 Server 的名称,例如 "demo-server"
|
||||
* 3. 根据提示,输入作者名,例如 "cloud"
|
||||
* 3. 根据提示,输入作者名,例如 "zt"
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
|
||||
@@ -87,8 +87,8 @@ mybatis-plus:
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
|
||||
|
||||
# ZT配置项,设置当前项目所有自定义的配置
|
||||
cloud:
|
||||
# 芋道配置项,设置当前项目所有自定义的配置
|
||||
zt:
|
||||
env: # 多环境的配置项
|
||||
tag: ${dollar}{HOSTNAME}
|
||||
security:
|
||||
|
||||
@@ -102,13 +102,13 @@ xxl:
|
||||
logpath: ${dollar}{user.home}/logs/xxl-job/${dollar}{spring.application.name} # 执行器运行日志文件存储磁盘路径
|
||||
accessToken: default_token # 执行器通讯TOKEN
|
||||
|
||||
cloud:
|
||||
zt:
|
||||
info:
|
||||
version: 1.0.0
|
||||
base-package: ${basePackage}.module.${packageName}
|
||||
web:
|
||||
admin-ui:
|
||||
url: http://dashboard.cloud.iocoder.cn # Admin 管理后台 UI 的地址
|
||||
url: http://dashboard.zt.iocoder.cn # Admin 管理后台 UI 的地址
|
||||
xss:
|
||||
enable: false
|
||||
exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系
|
||||
@@ -117,7 +117,7 @@ cloud:
|
||||
swagger:
|
||||
title: 管理后台
|
||||
description: 提供管理员管理的所有功能
|
||||
version: ${dollar}{cloud.info.version}
|
||||
version: ${dollar}{zt.info.version}
|
||||
tenant: # 多租户相关配置项
|
||||
enable: true
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
*
|
||||
* @author ${author}
|
||||
*/
|
||||
@SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${dollar}{cloud.info.base-package}
|
||||
@SpringBootApplication(scanBasePackages = {"${dollar}{cloud.info.base-package}.${packageName}", "${dollar}{cloud.info.base-package}.module"},
|
||||
@SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${dollar}{zt.info.base-package}
|
||||
@SpringBootApplication(scanBasePackages = {"${dollar}{zt.info.base-package}.${packageName}", "${dollar}{zt.info.base-package}.module"},
|
||||
excludeName = {})
|
||||
public class ${applicationClassName} {
|
||||
|
||||
|
||||
@@ -114,10 +114,10 @@ logging:
|
||||
# 配置自己写的 MyBatis Mapper 打印日志
|
||||
${basePackage}.${packageName}.dal.dao: debug
|
||||
|
||||
--- #################### ZT相关配置 ####################
|
||||
--- #################### 芋道相关配置 ####################
|
||||
|
||||
# ZT配置项,设置当前项目所有自定义的配置
|
||||
cloud:
|
||||
# 芋道配置项,设置当前项目所有自定义的配置
|
||||
zt:
|
||||
demo: false # 开启演示模式
|
||||
# 附件加密相关配置
|
||||
AES:
|
||||
|
||||
@@ -115,10 +115,10 @@ logging:
|
||||
${basePackage}.${packageName}.dal.dao: debug
|
||||
root: info
|
||||
|
||||
--- #################### ZT相关配置 ####################
|
||||
--- #################### 芋道相关配置 ####################
|
||||
|
||||
# ZT配置项,设置当前项目所有自定义的配置
|
||||
cloud:
|
||||
# 芋道配置项,设置当前项目所有自定义的配置
|
||||
zt:
|
||||
demo: false # 开启演示模式
|
||||
# 附件加密相关配置
|
||||
AES:
|
||||
|
||||
@@ -65,9 +65,9 @@ spring:
|
||||
repositories:
|
||||
enabled: false # 项目未使用到 Spring Data Redis 的 Repository,所以直接禁用,保证启动速度
|
||||
|
||||
--- #################### ZT相关配置 ####################
|
||||
--- #################### 芋道相关配置 ####################
|
||||
|
||||
cloud:
|
||||
zt:
|
||||
info:
|
||||
version: 1.0.0
|
||||
base-package: ${basePackage}
|
||||
@@ -96,7 +96,7 @@ cloud:
|
||||
swagger:
|
||||
title: ${serverName}
|
||||
description: ${serverDescription}
|
||||
version: ${cloud.info.version}
|
||||
version: ${zt.info.version}
|
||||
email: xingyu4j@vip.qq.com
|
||||
license: MIT
|
||||
license-url: https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/LICENSE
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<dependency>
|
||||
<groupId>com.zt.plat</groupId>
|
||||
<artifactId>zt-spring-boot-starter-rpc</artifactId>
|
||||
<!-- 目的:cloud-server 单体启动,禁用 openfeign -->
|
||||
<!-- 目的:zt-server 单体启动,禁用 openfeign -->
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<https://www.iocoder.cn/Spring-Boot/Unit-Test/?cloud>
|
||||
<https://www.iocoder.cn/Spring-Boot/Unit-Test/?zt>
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.zt.plat.framework.apilog.core.interceptor.ApiAccessLogInterceptor;
|
||||
import com.zt.plat.framework.common.biz.infra.logger.ApiAccessLogCommonApi;
|
||||
import com.zt.plat.framework.common.enums.WebFilterOrderEnum;
|
||||
import com.zt.plat.framework.web.config.WebProperties;
|
||||
import com.zt.plat.framework.web.config.CloudWebAutoConfiguration;
|
||||
import com.zt.plat.framework.web.config.ZtWebAutoConfiguration;
|
||||
import jakarta.servlet.Filter;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
@@ -15,14 +15,14 @@ import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@AutoConfiguration(after = CloudWebAutoConfiguration.class)
|
||||
public class CloudApiLogAutoConfiguration implements WebMvcConfigurer {
|
||||
@AutoConfiguration(after = ZtWebAutoConfiguration.class)
|
||||
public class ZtApiLogAutoConfiguration implements WebMvcConfigurer {
|
||||
|
||||
/**
|
||||
* 创建 ApiAccessLogFilter Bean,记录 API 请求日志
|
||||
*/
|
||||
@Bean
|
||||
@ConditionalOnProperty(prefix = "cloud.access-log", value = "enable", matchIfMissing = true) // 允许使用 cloud.access-log.enable=false 禁用访问日志
|
||||
@ConditionalOnProperty(prefix = "zt.access-log", value = "enable", matchIfMissing = true) // 允许使用 zt.access-log.enable=false 禁用访问日志
|
||||
public FilterRegistrationBean<ApiAccessLogFilter> apiAccessLogFilter(WebProperties webProperties,
|
||||
@Value("${spring.application.name}") String applicationName,
|
||||
ApiAccessLogCommonApi apiAccessLogApi) {
|
||||
@@ -12,5 +12,5 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
*/
|
||||
@AutoConfiguration
|
||||
@EnableFeignClients(clients = {ApiAccessLogCommonApi.class, ApiErrorLogCommonApi.class}) // 主要是引入相关的 API 服务
|
||||
public class CloudApiLogRpcAutoConfiguration {
|
||||
public class ZtApiLogRpcAutoConfiguration {
|
||||
}
|
||||
@@ -10,7 +10,7 @@ import org.springframework.context.annotation.Bean;
|
||||
* @author ZT
|
||||
*/
|
||||
@AutoConfiguration
|
||||
public class CloudBannerAutoConfiguration {
|
||||
public class ZtBannerAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
public BannerApplicationRunner bannerApplicationRunner() {
|
||||
@@ -28,15 +28,15 @@ public class BannerApplicationRunner implements ApplicationRunner {
|
||||
"http://172.16.46.63:30888");
|
||||
|
||||
// 数据报表
|
||||
System.out.println("[报表模块 cloud-module-report 教程][参考 http://172.16.46.63:30888/report/ 开启]");
|
||||
System.out.println("[报表模块 zt-module-report 教程][参考 http://172.16.46.63:30888/report/ 开启]");
|
||||
// 工作流
|
||||
System.out.println("[工作流模块 cloud-module-bpm 教程][参考 http://172.16.46.63:30888/bpm/ 开启]");
|
||||
System.out.println("[工作流模块 zt-module-bpm 教程][参考 http://172.16.46.63:30888/bpm/ 开启]");
|
||||
|
||||
// 微信公众号
|
||||
System.out.println("[微信公众号 cloud-module-mp 教程][参考 http://172.16.46.63:30888/mp/build/ 开启]");
|
||||
System.out.println("[微信公众号 zt-module-mp 教程][参考 http://172.16.46.63:30888/mp/build/ 开启]");
|
||||
|
||||
// AI 大模型
|
||||
System.out.println("[AI 大模型 cloud-module-ai - 教程][参考 http://172.16.46.63:30888/ai/build/ 开启]");
|
||||
System.out.println("[AI 大模型 zt-module-ai - 教程][参考 http://172.16.46.63:30888/ai/build/ 开启]");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ import java.util.List;
|
||||
|
||||
@AutoConfiguration
|
||||
@Slf4j
|
||||
public class CloudJacksonAutoConfiguration {
|
||||
public class ZtJacksonAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@SuppressWarnings("InstantiationOfUtilityClass")
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user