From f1eeb08d906502b3f31e99d0b4afafad6b8276e1 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期三, 17 一月 2024 21:20:29 +0800 Subject: [PATCH] update 优化 !pr479 代码效率与书写格式 --- ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/EncryptorAutoConfiguration.java | 68 +--------------------------------- 1 files changed, 2 insertions(+), 66 deletions(-) diff --git a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/EncryptorAutoConfiguration.java b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/EncryptorAutoConfiguration.java index a0e86a6..fbc4e52 100644 --- a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/EncryptorAutoConfiguration.java +++ b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/EncryptorAutoConfiguration.java @@ -1,11 +1,8 @@ package org.dromara.common.encrypt.config; -import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; import com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties; import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.io.Resources; -import org.dromara.common.encrypt.annotation.EncryptField; import org.dromara.common.encrypt.core.EncryptorManager; import org.dromara.common.encrypt.interceptor.MybatisDecryptInterceptor; import org.dromara.common.encrypt.interceptor.MybatisEncryptInterceptor; @@ -14,20 +11,7 @@ import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.core.io.support.ResourcePatternResolver; -import org.springframework.core.type.ClassMetadata; -import org.springframework.core.type.classreading.CachingMetadataReaderFactory; -import org.springframework.util.ClassUtils; - -import java.lang.reflect.Field; -import java.util.*; -import java.util.stream.Collectors; - -import static org.springframework.util.StringUtils.tokenizeToStringArray; /** * 鍔犺В瀵嗛厤缃� @@ -43,58 +27,10 @@ @Autowired private EncryptorProperties properties; - @Autowired - private MybatisPlusProperties mybatisPlusProperties; @Bean - public EncryptorManager encryptorManager() { - Map<Class<?>, Set<Field>> fieldCache = scanEncryptClasses(mybatisPlusProperties.getTypeAliasesPackage()); - return new EncryptorManager(fieldCache); - } - - // 閫氳繃typeAliasesPackage璁剧疆鐨勬壂鎻忓寘,鏉ョ‘瀹氬摢浜涘疄浣撶被杩涜缂撳瓨 - private Map<Class<?>, Set<Field>> scanEncryptClasses(String typeAliasesPackage) { - Map<Class<?>, Set<Field>> fieldCache = new HashMap<>(); - try { - String[] packagePatternArray = tokenizeToStringArray(typeAliasesPackage, - ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS); - for (String packagePattern : packagePatternArray) { - Resource[] resources = new PathMatchingResourcePatternResolver().getResources(ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX - + ClassUtils.convertClassNameToResourcePath(packagePattern) + "/**/*.class"); - for (Resource resource : resources) { - ClassMetadata classMetadata = new CachingMetadataReaderFactory().getMetadataReader(resource).getClassMetadata(); - Class<?> clazz = Resources.classForName(classMetadata.getClassName()); - Set<Field> encryptFieldSet = getEncryptFieldSetFromClazz(clazz); - if(CollectionUtil.isNotEmpty(encryptFieldSet)) { - fieldCache.put(clazz, encryptFieldSet); - } - } - } - }catch (Exception e) { - log.error("鍒濆鍖栨暟鎹畨鍏ㄧ紦瀛樻椂鍑洪敊:{}", e.getMessage()); - } - return fieldCache; - } - - // 鑾峰緱涓�涓被鐨勫姞瀵嗗瓧娈甸泦鍚� - private Set<Field> getEncryptFieldSetFromClazz(Class<?> clazz) { - Set<Field> fieldSet = new HashSet<>(); - // 鍒ゆ柇clazz濡傛灉鏄帴鍙�,鍐呴儴绫�,鍖垮悕绫诲氨鐩存帴杩斿洖 - if (clazz.isInterface() || clazz.isMemberClass() || clazz.isAnonymousClass()) { - return fieldSet; - } - while (clazz != null) { - Field[] fields = clazz.getDeclaredFields(); - fieldSet.addAll(Arrays.asList(fields)); - clazz = clazz.getSuperclass(); - } - fieldSet = fieldSet.stream().filter(field -> - field.isAnnotationPresent(EncryptField.class) && field.getType() == String.class) - .collect(Collectors.toSet()); - for (Field field : fieldSet) { - field.setAccessible(true); - } - return fieldSet; + public EncryptorManager encryptorManager(MybatisPlusProperties mybatisPlusProperties) { + return new EncryptorManager(mybatisPlusProperties.getTypeAliasesPackage()); } @Bean -- Gitblit v1.9.3