RuoYi
3 years ago
10 changed files with 306 additions and 236 deletions
@ -0,0 +1,26 @@ |
|||||||
|
package com.ruoyi.common.datasource.env; |
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication; |
||||||
|
import org.springframework.boot.env.EnvironmentPostProcessor; |
||||||
|
import org.springframework.core.Ordered; |
||||||
|
import org.springframework.core.env.ConfigurableEnvironment; |
||||||
|
|
||||||
|
/** |
||||||
|
* seata 在 springboot 2.6.x 存在循环引用问题的处理 |
||||||
|
* |
||||||
|
* @author ruoyi |
||||||
|
*/ |
||||||
|
public class ApplicationSeataInitializer implements EnvironmentPostProcessor, Ordered |
||||||
|
{ |
||||||
|
@Override |
||||||
|
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) |
||||||
|
{ |
||||||
|
System.setProperty("spring.main.allow-circular-references", "true"); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getOrder() |
||||||
|
{ |
||||||
|
return Ordered.LOWEST_PRECEDENCE; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,2 @@ |
|||||||
|
org.springframework.boot.env.EnvironmentPostProcessor=\ |
||||||
|
com.ruoyi.common.datasource.env.ApplicationSeataInitializer |
@ -0,0 +1,54 @@ |
|||||||
|
package com.ruoyi.common.swagger.config; |
||||||
|
|
||||||
|
import org.springframework.beans.BeansException; |
||||||
|
import org.springframework.beans.factory.config.BeanPostProcessor; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
import org.springframework.util.ReflectionUtils; |
||||||
|
import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping; |
||||||
|
import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider; |
||||||
|
import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider; |
||||||
|
import java.lang.reflect.Field; |
||||||
|
import java.util.List; |
||||||
|
import java.util.stream.Collectors; |
||||||
|
|
||||||
|
/** |
||||||
|
* swagger 在 springboot 2.6.x 不兼容问题的处理 |
||||||
|
* |
||||||
|
* @author ruoyi |
||||||
|
*/ |
||||||
|
@Component |
||||||
|
public class SwaggerBeanPostProcessor implements BeanPostProcessor |
||||||
|
{ |
||||||
|
@Override |
||||||
|
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException |
||||||
|
{ |
||||||
|
if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) |
||||||
|
{ |
||||||
|
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); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -1,3 +1,4 @@ |
|||||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ |
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ |
||||||
com.ruoyi.common.swagger.config.SwaggerAutoConfiguration,\ |
com.ruoyi.common.swagger.config.SwaggerAutoConfiguration,\ |
||||||
com.ruoyi.common.swagger.config.SwaggerWebConfiguration |
com.ruoyi.common.swagger.config.SwaggerWebConfiguration,\ |
||||||
|
com.ruoyi.common.swagger.config.SwaggerBeanPostProcessor |
Loading…
Reference in new issue