mirror of https://gitee.com/maxjhandsome/pig
✨ pig-common-core Code optimization.
This commit is contained in:
parent
c92ef06cd8
commit
dc4700a13c
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
package com.pig4cloud.pig.common.core.config;
|
package com.pig4cloud.pig.common.core.config;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||||
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
|
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
|
||||||
import org.springframework.cache.annotation.EnableCaching;
|
import org.springframework.cache.annotation.EnableCaching;
|
||||||
|
@ -33,14 +32,11 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||||
*/
|
*/
|
||||||
@EnableCaching
|
@EnableCaching
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
@RequiredArgsConstructor
|
|
||||||
@AutoConfigureBefore(RedisAutoConfiguration.class)
|
@AutoConfigureBefore(RedisAutoConfiguration.class)
|
||||||
public class RedisTemplateConfiguration {
|
public class RedisTemplateConfiguration {
|
||||||
|
|
||||||
private final RedisConnectionFactory factory;
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public RedisTemplate<String, Object> redisTemplate() {
|
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
|
||||||
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
|
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
|
||||||
redisTemplate.setKeySerializer(new StringRedisSerializer());
|
redisTemplate.setKeySerializer(new StringRedisSerializer());
|
||||||
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
|
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
|
||||||
|
|
|
@ -18,7 +18,6 @@ package com.pig4cloud.pig.common.datasource.config;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lengleng
|
* @author lengleng
|
||||||
|
@ -26,7 +25,6 @@ import org.springframework.stereotype.Component;
|
||||||
* <p>
|
* <p>
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@Component
|
|
||||||
@ConfigurationProperties("spring.datasource")
|
@ConfigurationProperties("spring.datasource")
|
||||||
public class DataSourceProperties {
|
public class DataSourceProperties {
|
||||||
|
|
||||||
|
|
|
@ -79,8 +79,8 @@ public final class PigSentinelFeign {
|
||||||
|
|
||||||
// 查找 FeignClient 上的 降级策略
|
// 查找 FeignClient 上的 降级策略
|
||||||
FeignClient feignClient = AnnotationUtils.findAnnotation(target.type(), FeignClient.class);
|
FeignClient feignClient = AnnotationUtils.findAnnotation(target.type(), FeignClient.class);
|
||||||
Class fallback = feignClient.fallback();
|
Class<?> fallback = feignClient.fallback();
|
||||||
Class fallbackFactory = feignClient.fallbackFactory();
|
Class<?> fallbackFactory = feignClient.fallbackFactory();
|
||||||
|
|
||||||
String beanName = feignClient.contextId();
|
String beanName = feignClient.contextId();
|
||||||
if (!StringUtils.hasText(beanName)) {
|
if (!StringUtils.hasText(beanName)) {
|
||||||
|
@ -88,7 +88,7 @@ public final class PigSentinelFeign {
|
||||||
}
|
}
|
||||||
|
|
||||||
Object fallbackInstance;
|
Object fallbackInstance;
|
||||||
FallbackFactory fallbackFactoryInstance;
|
FallbackFactory<?> fallbackFactoryInstance;
|
||||||
if (void.class != fallback) {
|
if (void.class != fallback) {
|
||||||
fallbackInstance = getFromContext(beanName, "fallback", fallback, target.type());
|
fallbackInstance = getFromContext(beanName, "fallback", fallback, target.type());
|
||||||
return new PigSentinelInvocationHandler(target, dispatch,
|
return new PigSentinelInvocationHandler(target, dispatch,
|
||||||
|
@ -96,14 +96,14 @@ public final class PigSentinelFeign {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (void.class != fallbackFactory) {
|
if (void.class != fallbackFactory) {
|
||||||
fallbackFactoryInstance = (FallbackFactory) getFromContext(beanName, "fallbackFactory",
|
fallbackFactoryInstance = (FallbackFactory<?>) getFromContext(beanName, "fallbackFactory",
|
||||||
fallbackFactory, FallbackFactory.class);
|
fallbackFactory, FallbackFactory.class);
|
||||||
return new PigSentinelInvocationHandler(target, dispatch, fallbackFactoryInstance);
|
return new PigSentinelInvocationHandler(target, dispatch, fallbackFactoryInstance);
|
||||||
}
|
}
|
||||||
return new PigSentinelInvocationHandler(target, dispatch);
|
return new PigSentinelInvocationHandler(target, dispatch);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object getFromContext(String name, String type, Class fallbackType, Class targetType) {
|
private Object getFromContext(String name, String type, Class<?> fallbackType, Class<?> targetType) {
|
||||||
Object fallbackInstance = feignContext.getInstance(name, fallbackType);
|
Object fallbackInstance = feignContext.getInstance(name, fallbackType);
|
||||||
if (fallbackInstance == null) {
|
if (fallbackInstance == null) {
|
||||||
throw new IllegalStateException(String.format(
|
throw new IllegalStateException(String.format(
|
||||||
|
|
|
@ -60,12 +60,12 @@ public class PigSentinelInvocationHandler implements InvocationHandler {
|
||||||
|
|
||||||
private final Map<Method, InvocationHandlerFactory.MethodHandler> dispatch;
|
private final Map<Method, InvocationHandlerFactory.MethodHandler> dispatch;
|
||||||
|
|
||||||
private FallbackFactory fallbackFactory;
|
private FallbackFactory<?> fallbackFactory;
|
||||||
|
|
||||||
private Map<Method, Method> fallbackMethodMap;
|
private Map<Method, Method> fallbackMethodMap;
|
||||||
|
|
||||||
PigSentinelInvocationHandler(Target<?> target, Map<Method, InvocationHandlerFactory.MethodHandler> dispatch,
|
PigSentinelInvocationHandler(Target<?> target, Map<Method, InvocationHandlerFactory.MethodHandler> dispatch,
|
||||||
FallbackFactory fallbackFactory) {
|
FallbackFactory<?> fallbackFactory) {
|
||||||
this.target = checkNotNull(target, "target");
|
this.target = checkNotNull(target, "target");
|
||||||
this.dispatch = checkNotNull(dispatch, "dispatch");
|
this.dispatch = checkNotNull(dispatch, "dispatch");
|
||||||
this.fallbackFactory = fallbackFactory;
|
this.fallbackFactory = fallbackFactory;
|
||||||
|
@ -99,7 +99,7 @@ public class PigSentinelInvocationHandler implements InvocationHandler {
|
||||||
InvocationHandlerFactory.MethodHandler methodHandler = this.dispatch.get(method);
|
InvocationHandlerFactory.MethodHandler methodHandler = this.dispatch.get(method);
|
||||||
// only handle by HardCodedTarget
|
// only handle by HardCodedTarget
|
||||||
if (target instanceof Target.HardCodedTarget) {
|
if (target instanceof Target.HardCodedTarget) {
|
||||||
Target.HardCodedTarget hardCodedTarget = (Target.HardCodedTarget) target;
|
Target.HardCodedTarget<?> hardCodedTarget = (Target.HardCodedTarget) target;
|
||||||
MethodMetadata methodMetadata = SentinelContractHolder.METADATA_MAP
|
MethodMetadata methodMetadata = SentinelContractHolder.METADATA_MAP
|
||||||
.get(hardCodedTarget.type().getName() + Feign.configKey(hardCodedTarget.type(), method));
|
.get(hardCodedTarget.type().getName() + Feign.configKey(hardCodedTarget.type(), method));
|
||||||
// resource default is HttpMethod:protocol://url
|
// resource default is HttpMethod:protocol://url
|
||||||
|
@ -107,7 +107,7 @@ public class PigSentinelInvocationHandler implements InvocationHandler {
|
||||||
result = methodHandler.invoke(args);
|
result = methodHandler.invoke(args);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
String resourceName = methodMetadata.template().method().toUpperCase() + ":" + hardCodedTarget.url()
|
String resourceName = methodMetadata.template().method().toUpperCase() + ':' + hardCodedTarget.url()
|
||||||
+ methodMetadata.template().path();
|
+ methodMetadata.template().path();
|
||||||
Entry entry = null;
|
Entry entry = null;
|
||||||
try {
|
try {
|
||||||
|
@ -122,9 +122,7 @@ public class PigSentinelInvocationHandler implements InvocationHandler {
|
||||||
}
|
}
|
||||||
if (fallbackFactory != null) {
|
if (fallbackFactory != null) {
|
||||||
try {
|
try {
|
||||||
Object fallbackResult = fallbackMethodMap.get(method).invoke(fallbackFactory.create(ex),
|
return fallbackMethodMap.get(method).invoke(fallbackFactory.create(ex), args);
|
||||||
args);
|
|
||||||
return fallbackResult;
|
|
||||||
}
|
}
|
||||||
catch (IllegalAccessException e) {
|
catch (IllegalAccessException e) {
|
||||||
// shouldn't happen as method is public due to being an
|
// shouldn't happen as method is public due to being an
|
||||||
|
|
|
@ -21,6 +21,7 @@ import cn.hutool.extra.servlet.ServletUtil;
|
||||||
import cn.hutool.http.HttpUtil;
|
import cn.hutool.http.HttpUtil;
|
||||||
import com.pig4cloud.pig.admin.api.entity.SysLog;
|
import com.pig4cloud.pig.admin.api.entity.SysLog;
|
||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
import org.springframework.security.oauth2.provider.OAuth2Authentication;
|
import org.springframework.security.oauth2.provider.OAuth2Authentication;
|
||||||
|
@ -47,7 +48,7 @@ public class SysLogUtils {
|
||||||
sysLog.setRemoteAddr(ServletUtil.getClientIP(request));
|
sysLog.setRemoteAddr(ServletUtil.getClientIP(request));
|
||||||
sysLog.setRequestUri(URLUtil.getPath(request.getRequestURI()));
|
sysLog.setRequestUri(URLUtil.getPath(request.getRequestURI()));
|
||||||
sysLog.setMethod(request.getMethod());
|
sysLog.setMethod(request.getMethod());
|
||||||
sysLog.setUserAgent(request.getHeader("user-agent"));
|
sysLog.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT));
|
||||||
sysLog.setParams(HttpUtil.toParams(request.getParameterMap()));
|
sysLog.setParams(HttpUtil.toParams(request.getParameterMap()));
|
||||||
sysLog.setServiceId(getClientId());
|
sysLog.setServiceId(getClientId());
|
||||||
return sysLog;
|
return sysLog;
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class SqlFilterArgumentResolver implements HandlerMethodArgumentResolver
|
||||||
String current = request.getParameter("current");
|
String current = request.getParameter("current");
|
||||||
String size = request.getParameter("size");
|
String size = request.getParameter("size");
|
||||||
|
|
||||||
Page page = new Page();
|
Page<?> page = new Page<>();
|
||||||
if (StrUtil.isNotBlank(current)) {
|
if (StrUtil.isNotBlank(current)) {
|
||||||
page.setCurrent(Long.parseLong(current));
|
page.setCurrent(Long.parseLong(current));
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,9 +29,9 @@ import com.pig4cloud.pig.common.core.util.R;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.security.access.AccessDeniedException;
|
import org.springframework.security.access.AccessDeniedException;
|
||||||
import org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler;
|
import org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler;
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
@ -41,7 +41,7 @@ import java.io.PrintWriter;
|
||||||
* @author lengleng 授权拒绝处理器,覆盖默认的OAuth2AccessDeniedHandler 包装失败信息到PigDeniedException
|
* @author lengleng 授权拒绝处理器,覆盖默认的OAuth2AccessDeniedHandler 包装失败信息到PigDeniedException
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Configuration(proxyBeanMethods = false)
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class PigAccessDeniedHandler extends OAuth2AccessDeniedHandler {
|
public class PigAccessDeniedHandler extends OAuth2AccessDeniedHandler {
|
||||||
|
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
package com.pig4cloud.pig.common.security.component;
|
package com.pig4cloud.pig.common.security.component;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.security.oauth2.provider.authentication.BearerTokenExtractor;
|
import org.springframework.security.oauth2.provider.authentication.BearerTokenExtractor;
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import org.springframework.util.AntPathMatcher;
|
import org.springframework.util.AntPathMatcher;
|
||||||
import org.springframework.util.PathMatcher;
|
import org.springframework.util.PathMatcher;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ import javax.servlet.http.HttpServletRequest;
|
||||||
* @author caiqy
|
* @author caiqy
|
||||||
* @date 2020.05.15
|
* @date 2020.05.15
|
||||||
*/
|
*/
|
||||||
@Component
|
@Configuration(proxyBeanMethods = false)
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class PigBearerTokenExtractor extends BearerTokenExtractor {
|
public class PigBearerTokenExtractor extends BearerTokenExtractor {
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ import java.lang.annotation.*;
|
||||||
* @author lengleng
|
* @author lengleng
|
||||||
* @date 2019/2/1 注入AccessTokenContextRelay 解决feign 传递token 为空问题
|
* @date 2019/2/1 注入AccessTokenContextRelay 解决feign 传递token 为空问题
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration(proxyBeanMethods = false)
|
||||||
@AutoConfigureAfter(OAuth2AutoConfiguration.class)
|
@AutoConfigureAfter(OAuth2AutoConfiguration.class)
|
||||||
@ConditionalOnWebApplication
|
@ConditionalOnWebApplication
|
||||||
@ConditionalOnProperty("security.oauth2.client.client-id")
|
@ConditionalOnProperty("security.oauth2.client.client-id")
|
||||||
|
|
|
@ -23,9 +23,9 @@ import com.pig4cloud.pig.common.core.util.R;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.security.core.AuthenticationException;
|
import org.springframework.security.core.AuthenticationException;
|
||||||
import org.springframework.security.web.AuthenticationEntryPoint;
|
import org.springframework.security.web.AuthenticationEntryPoint;
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
@ -36,7 +36,7 @@ import java.io.PrintWriter;
|
||||||
* @date 2019/2/1 客户端异常处理 1. 可以根据 AuthenticationException 不同细化异常处理
|
* @date 2019/2/1 客户端异常处理 1. 可以根据 AuthenticationException 不同细化异常处理
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Configuration(proxyBeanMethods = false)
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class ResourceAuthExceptionEntryPoint implements AuthenticationEntryPoint {
|
public class ResourceAuthExceptionEntryPoint implements AuthenticationEntryPoint {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue