⬆️ Upgrading dependencies. spring cloud 2021 & spring boot 2.6.x
⬆️ Upgrading dependencies. spring cloud 2021 & spring boot 2.6.x
This commit is contained in:
1 parent
0b2317f344
commit
0b51c3c73d
16 files changed
+168
-86
No files matched your search
-2
@@ -23,7 +23,6 @@ import com.pig4cloud.pigx.common.gateway.rule.VersionGrayLoadBalancer;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.cloud.client.discovery.DiscoveryClient;
|
||||
import org.springframework.cloud.client.loadbalancer.LoadBalancerProperties;
|
||||
import org.springframework.cloud.gateway.config.GatewayLoadBalancerProperties;
|
||||
@@ -39,7 +38,6 @@ import org.springframework.context.annotation.Configuration;
|
||||
* @link https://github.com/lets-mica/mica
|
||||
*/
|
||||
@Configuration
|
||||
@EnableConfigurationProperties(LoadBalancerProperties.class)
|
||||
@ConditionalOnProperty(value = "gray.rule.enabled", havingValue = "true")
|
||||
@AutoConfigureBefore(GatewayReactiveLoadBalancerClientAutoConfiguration.class)
|
||||
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE)
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
* @date 2020/1/12
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnProperty(value = "gray.rule.enabled", havingValue = "true")
|
||||
@ConditionalOnProperty(value = "gray.rule.enabled", matchIfMissing = true)
|
||||
@LoadBalancerClients(defaultConfiguration = GrayLoadBalancerClientConfiguration.class)
|
||||
public class GrayLoadBalancerAutoConfiguration {
|
||||
|
||||
|
||||
+3
@@ -21,6 +21,7 @@ import com.alibaba.cloud.sentinel.feign.SentinelFeignAutoConfiguration;
|
||||
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
|
||||
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser;
|
||||
import com.pig4cloud.pigx.common.sentinel.feign.PigxSentinelFeign;
|
||||
import com.pig4cloud.pigx.common.sentinel.feign.PigxSentinelFilterConfiguration;
|
||||
import com.pig4cloud.pigx.common.sentinel.handle.PigxUrlBlockHandler;
|
||||
import com.pig4cloud.pigx.common.sentinel.parser.PigxHeaderRequestOriginParser;
|
||||
import feign.Feign;
|
||||
@@ -29,6 +30,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
|
||||
/**
|
||||
@@ -38,6 +40,7 @@ import org.springframework.context.annotation.Scope;
|
||||
* sentinel 配置
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@Import(PigxSentinelFilterConfiguration.class)
|
||||
@AutoConfigureBefore(SentinelFeignAutoConfiguration.class)
|
||||
public class SentinelAutoConfiguration {
|
||||
|
||||
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
package com.pig4cloud.pigx.common.sentinel.feign;
|
||||
|
||||
import com.alibaba.cloud.sentinel.SentinelProperties;
|
||||
import com.alibaba.csp.sentinel.adapter.spring.webmvc.SentinelWebInterceptor;
|
||||
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
|
||||
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.DefaultBlockExceptionHandler;
|
||||
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser;
|
||||
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.UrlCleaner;
|
||||
import com.alibaba.csp.sentinel.adapter.spring.webmvc.config.SentinelWebMvcConfig;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @author lengleng
|
||||
* @date 2021/12/4
|
||||
*
|
||||
* 避免 spring cloud 2021 不兼容 的问题
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
|
||||
public class PigxSentinelFilterConfiguration {
|
||||
|
||||
@Bean
|
||||
public SentinelWebInterceptor sentinelWebInterceptor(SentinelWebMvcConfig sentinelWebMvcConfig) {
|
||||
return new SentinelWebInterceptor(sentinelWebMvcConfig);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SentinelWebMvcConfig sentinelWebMvcConfig(SentinelProperties properties,
|
||||
Optional<UrlCleaner> urlCleanerOptional, Optional<BlockExceptionHandler> blockExceptionHandlerOptional,
|
||||
Optional<RequestOriginParser> requestOriginParserOptional) {
|
||||
SentinelWebMvcConfig sentinelWebMvcConfig = new SentinelWebMvcConfig();
|
||||
sentinelWebMvcConfig.setHttpMethodSpecify(properties.getHttpMethodSpecify());
|
||||
sentinelWebMvcConfig.setWebContextUnify(properties.getWebContextUnify());
|
||||
|
||||
if (blockExceptionHandlerOptional.isPresent()) {
|
||||
blockExceptionHandlerOptional.ifPresent(sentinelWebMvcConfig::setBlockExceptionHandler);
|
||||
}
|
||||
else {
|
||||
if (StringUtils.hasText(properties.getBlockPage())) {
|
||||
sentinelWebMvcConfig.setBlockExceptionHandler(
|
||||
((request, response, e) -> response.sendRedirect(properties.getBlockPage())));
|
||||
}
|
||||
else {
|
||||
sentinelWebMvcConfig.setBlockExceptionHandler(new DefaultBlockExceptionHandler());
|
||||
}
|
||||
}
|
||||
|
||||
urlCleanerOptional.ifPresent(sentinelWebMvcConfig::setUrlCleaner);
|
||||
requestOriginParserOptional.ifPresent(sentinelWebMvcConfig::setOriginParser);
|
||||
return sentinelWebMvcConfig;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -79,5 +79,10 @@
|
||||
<artifactId>spring-cloud-commons</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-webmvc</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
+44
-1
@@ -18,10 +18,15 @@ package com.pig4cloud.pigx.common.swagger.config;
|
||||
|
||||
import com.pig4cloud.pigx.common.swagger.support.SwaggerProperties;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
|
||||
import springfox.documentation.builders.ApiInfoBuilder;
|
||||
import springfox.documentation.builders.PathSelectors;
|
||||
import springfox.documentation.builders.RequestHandlerSelectors;
|
||||
@@ -32,12 +37,15 @@ import springfox.documentation.spi.DocumentationType;
|
||||
import springfox.documentation.spi.service.contexts.SecurityContext;
|
||||
import springfox.documentation.spring.web.plugins.ApiSelectorBuilder;
|
||||
import springfox.documentation.spring.web.plugins.Docket;
|
||||
import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author lengleng swagger配置 禁用方法1:使用注解@Profile({"dev","test"})
|
||||
@@ -47,7 +55,7 @@ import java.util.function.Predicate;
|
||||
@Configuration
|
||||
@EnableAutoConfiguration
|
||||
@RequiredArgsConstructor
|
||||
@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true)
|
||||
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
|
||||
public class SwaggerAutoConfiguration {
|
||||
|
||||
/**
|
||||
@@ -60,6 +68,7 @@ public class SwaggerAutoConfiguration {
|
||||
private final SwaggerProperties swaggerProperties;
|
||||
|
||||
@Bean
|
||||
@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true)
|
||||
public Docket api() {
|
||||
// base-path处理
|
||||
if (swaggerProperties.getBasePath().isEmpty()) {
|
||||
@@ -136,4 +145,38 @@ public class SwaggerAutoConfiguration {
|
||||
.version(swaggerProperties.getVersion()).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
|
||||
return new BeanPostProcessor() {
|
||||
|
||||
@Override
|
||||
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
|
||||
if (bean instanceof WebMvcRequestHandlerProvider) {
|
||||
customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
|
||||
}
|
||||
return bean;
|
||||
}
|
||||
|
||||
private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(
|
||||
List<T> mappings) {
|
||||
List<T> copy = mappings.stream().filter(mapping -> mapping.getPatternParser() == null)
|
||||
.collect(Collectors.toList());
|
||||
mappings.clear();
|
||||
mappings.addAll(copy);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
|
||||
try {
|
||||
Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
|
||||
field.setAccessible(true);
|
||||
return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
|
||||
}
|
||||
catch (IllegalArgumentException | IllegalAccessException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
@@ -73,10 +73,16 @@
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
|
||||
</dependency>
|
||||
<!-- LB 扩展 -->
|
||||
<dependency>
|
||||
<groupId>com.pig4cloud</groupId>
|
||||
<artifactId>pigx-common-sentinel</artifactId>
|
||||
</dependency>
|
||||
<!--caffeine 替换LB 默认缓存实现-->
|
||||
<dependency>
|
||||
<groupId>com.github.ben-manes.caffeine</groupId>
|
||||
<artifactId>caffeine</artifactId>
|
||||
</dependency>
|
||||
<!--swagger 依赖-->
|
||||
<dependency>
|
||||
<groupId>com.pig4cloud</groupId>
|
||||
|
||||
+2
-2
@@ -122,8 +122,8 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
@Override
|
||||
public List<Tree<Long>> selectTree(String deptName) {
|
||||
// 查询全部部门
|
||||
List<SysDept> deptAllList = deptMapper
|
||||
.selectList(Wrappers.<SysDept>lambdaQuery().like(StrUtil.isNotBlank(deptName),SysDept::getName, deptName));
|
||||
List<SysDept> deptAllList = deptMapper.selectList(
|
||||
Wrappers.<SysDept>lambdaQuery().like(StrUtil.isNotBlank(deptName), SysDept::getName, deptName));
|
||||
// 查询数据权限内部门
|
||||
List<Long> deptOwnIdList = deptMapper.selectListByScope(
|
||||
Wrappers.<SysDept>lambdaQuery().like(StrUtil.isNotBlank(deptName), SysDept::getName, deptName),
|
||||
|
||||
+2
@@ -31,6 +31,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
|
||||
|
||||
import java.util.Iterator;
|
||||
@@ -41,6 +42,7 @@ import java.util.Properties;
|
||||
/**
|
||||
* @author 郑健楠
|
||||
*/
|
||||
@EnableAsync
|
||||
@Configuration
|
||||
@ConditionalOnClass({ Scheduler.class, SchedulerFactoryBean.class })
|
||||
@EnableConfigurationProperties({ QuartzProperties.class })
|
||||
|
||||
+3
-1
@@ -25,12 +25,14 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.quartz.Trigger;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author 郑健楠
|
||||
*/
|
||||
@Aspect
|
||||
@Slf4j
|
||||
@Aspect
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class PigxQuartzInvokeFactory {
|
||||
|
||||
|
||||
-67
@@ -1,67 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2018-2025, lengleng All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the pig4cloud.com developer nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
* Author: lengleng (wangiegie@gmail.com)
|
||||
*/
|
||||
|
||||
package com.pig4cloud.pigx.daemon.quartz.event;
|
||||
|
||||
import com.pig4cloud.pigx.daemon.quartz.config.PigxQuartzInvokeFactory;
|
||||
import com.pig4cloud.pigx.daemon.quartz.service.SysJobLogService;
|
||||
import com.pig4cloud.pigx.daemon.quartz.util.TaskInvokUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
|
||||
/**
|
||||
* @author frwcloud
|
||||
* @date 2018/6/28
|
||||
* <p>
|
||||
* 多线程自动配置
|
||||
*/
|
||||
@EnableAsync
|
||||
@Configuration
|
||||
@ConditionalOnWebApplication
|
||||
public class EventAutoConfiguration {
|
||||
|
||||
@Autowired
|
||||
private TaskInvokUtil taskInvokUtil;
|
||||
|
||||
@Autowired
|
||||
private SysJobLogService sysJobLogService;
|
||||
|
||||
@Bean
|
||||
public SysJobListener sysJobListener() {
|
||||
return new SysJobListener(taskInvokUtil);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PigxQuartzInvokeFactory pigxQuartzInvokeFactory(ApplicationEventPublisher publisher) {
|
||||
return new PigxQuartzInvokeFactory(publisher);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SysJobLogListener sysJobLogListener() {
|
||||
return new SysJobLogListener(sysJobLogService);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public TaskInvokUtil taskInvokUtil(ApplicationEventPublisher publisher) {
|
||||
return new TaskInvokUtil(publisher);
|
||||
}
|
||||
|
||||
}
|
||||
+5
-3
@@ -19,21 +19,23 @@ package com.pig4cloud.pigx.daemon.quartz.event;
|
||||
|
||||
import com.pig4cloud.pigx.daemon.quartz.entity.SysJob;
|
||||
import com.pig4cloud.pigx.daemon.quartz.util.TaskInvokUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.quartz.Trigger;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author frwcloud 异步监听定时任务事件
|
||||
*/
|
||||
@Slf4j
|
||||
@AllArgsConstructor
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysJobListener {
|
||||
|
||||
private TaskInvokUtil taskInvokUtil;
|
||||
private final TaskInvokUtil taskInvokUtil;
|
||||
|
||||
@Async
|
||||
@Order
|
||||
|
||||
+5
-3
@@ -19,20 +19,22 @@ package com.pig4cloud.pigx.daemon.quartz.event;
|
||||
|
||||
import com.pig4cloud.pigx.daemon.quartz.entity.SysJobLog;
|
||||
import com.pig4cloud.pigx.daemon.quartz.service.SysJobLogService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author frwcloud 异步监听定时任务日志事件
|
||||
*/
|
||||
@Slf4j
|
||||
@AllArgsConstructor
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysJobLogListener {
|
||||
|
||||
private SysJobLogService sysJobLogService;
|
||||
private final SysJobLogService sysJobLogService;
|
||||
|
||||
@Async
|
||||
@Order
|
||||
|
||||
+3
-5
@@ -27,11 +27,10 @@ import com.pig4cloud.pigx.daemon.quartz.service.SysJobService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.quartz.CronTrigger;
|
||||
import org.quartz.Trigger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.ZoneId;
|
||||
import java.util.Date;
|
||||
@@ -42,14 +41,13 @@ import java.util.Date;
|
||||
* @author 郑健楠
|
||||
*/
|
||||
@Slf4j
|
||||
@Aspect
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class TaskInvokUtil {
|
||||
|
||||
private final ApplicationEventPublisher publisher;
|
||||
|
||||
@Autowired
|
||||
private SysJobService sysJobService;
|
||||
private final SysJobService sysJobService;
|
||||
|
||||
@SneakyThrows
|
||||
public void invokMethod(SysJob sysJob, Trigger trigger) {
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package com.pig4cloud.pigx.monitor.support;
|
||||
|
||||
import de.codecentric.boot.admin.server.cloud.discovery.DefaultServiceInstanceConverter;
|
||||
import org.springframework.cloud.client.ServiceInstance;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static java.util.Collections.emptyMap;
|
||||
|
||||
/**
|
||||
* 针对 nacos 2.x 服务注册处理
|
||||
*
|
||||
* @author lengleng
|
||||
* @date 2021/12/20
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
public class NacosServiceInstanceConverter extends DefaultServiceInstanceConverter {
|
||||
|
||||
@Override
|
||||
protected Map<String, String> getMetadata(ServiceInstance instance) {
|
||||
return (instance.getMetadata() != null)
|
||||
? instance.getMetadata().entrySet().stream().filter((e) -> e.getKey() != null && e.getValue() != null)
|
||||
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))
|
||||
: emptyMap();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user