delete MybatisInterceptorAnalyzeProcessor
This commit is contained in:
parent
63c6b1d622
commit
b3307b1bf5
@ -1,80 +0,0 @@
|
|||||||
package cn.axzo.msg.center.notices.client.config;
|
|
||||||
|
|
||||||
import cn.axzo.trade.datasecurity.mybatisplus.interceptor.MybatisPlusCryptInterceptor;
|
|
||||||
import com.google.common.collect.Sets;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.apache.ibatis.plugin.Interceptor;
|
|
||||||
import org.apache.ibatis.plugin.InterceptorChain;
|
|
||||||
import org.apache.ibatis.session.SqlSessionFactory;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.springframework.beans.BeansException;
|
|
||||||
import org.springframework.beans.factory.config.BeanPostProcessor;
|
|
||||||
import org.springframework.util.ReflectionUtils;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.lang.reflect.Modifier;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author yanglin
|
|
||||||
*/
|
|
||||||
@Slf4j
|
|
||||||
//@Component
|
|
||||||
public class MybatisInterceptorAnalyzeProcessor implements BeanPostProcessor {
|
|
||||||
|
|
||||||
private static final Set<Class<?>> EXPECTED_INTERCEPTORS = Sets.newHashSet(
|
|
||||||
MybatisPlusCryptInterceptor.class);
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object postProcessBeforeInitialization(
|
|
||||||
@NotNull Object bean, @NotNull String beanName) throws BeansException {
|
|
||||||
if (bean instanceof SqlSessionFactory) {
|
|
||||||
try {
|
|
||||||
analyze((SqlSessionFactory) bean);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.warn("SqlSessionFactory analyze error", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return bean;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void analyze(SqlSessionFactory sessionFactory) {
|
|
||||||
org.apache.ibatis.session.Configuration configuration = sessionFactory.getConfiguration();
|
|
||||||
InterceptorChain oldChain = getFieldValue(configuration, "interceptorChain");
|
|
||||||
List<Interceptor> oldInterceptors = getFieldValue(oldChain, "interceptors");
|
|
||||||
AnalyzeInterceptorChain newChain = new AnalyzeInterceptorChain();
|
|
||||||
for (Interceptor interceptor : oldInterceptors)
|
|
||||||
newChain.addInterceptor(interceptor);
|
|
||||||
setFieldValue(configuration, "interceptorChain", newChain);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings({"unchecked", "DataFlowIssue"})
|
|
||||||
private static <T> T getFieldValue(Object obj, String fieldName) {
|
|
||||||
Field field = ReflectionUtils.findField(obj.getClass(), fieldName);
|
|
||||||
field.setAccessible(true);
|
|
||||||
return (T)ReflectionUtils.getField(field, obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("DataFlowIssue")
|
|
||||||
private static void setFieldValue(Object obj, String fieldName, Object value) {
|
|
||||||
Field field = ReflectionUtils.findField(obj.getClass(), fieldName);
|
|
||||||
Field modifiers = ReflectionUtils.findField(Field.class, "modifiers");
|
|
||||||
field.setAccessible(true);
|
|
||||||
modifiers.setAccessible(true);
|
|
||||||
ReflectionUtils.setField(modifiers, field, field.getModifiers() & ~Modifier.FINAL);
|
|
||||||
ReflectionUtils.setField(field, obj, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class AnalyzeInterceptorChain extends InterceptorChain {
|
|
||||||
@Override
|
|
||||||
public void addInterceptor(Interceptor interceptor) {
|
|
||||||
super.addInterceptor(interceptor);
|
|
||||||
if (EXPECTED_INTERCEPTORS.contains(interceptor.getClass()))
|
|
||||||
log.info("Adding interceptor={}", interceptor.getClass().getName());
|
|
||||||
else
|
|
||||||
log.warn("Unexpected interceptor={}", interceptor.getClass().getName(), new RuntimeException());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue
Block a user