获得类的加密字段集合时增加判断clazz如果是接口,内部类,匿名类就直接返回

This commit is contained in:
_老马_ 2024-01-17 08:53:25 +08:00 committed by 老马
parent a4c0941c8d
commit ae34211d82

View File

@ -63,9 +63,9 @@ public class EncryptorAutoConfiguration {
for (org.springframework.core.io.Resource resource : resources) { for (org.springframework.core.io.Resource resource : resources) {
ClassMetadata classMetadata = new CachingMetadataReaderFactory().getMetadataReader(resource).getClassMetadata(); ClassMetadata classMetadata = new CachingMetadataReaderFactory().getMetadataReader(resource).getClassMetadata();
Class<?> clazz = Resources.classForName(classMetadata.getClassName()); Class<?> clazz = Resources.classForName(classMetadata.getClassName());
Set<Field> safeFieldSetFromClazz = getSafeFieldSetFromClazz(clazz); Set<Field> encryptFieldSet = getEncryptFieldSetFromClazz(clazz);
if(CollectionUtil.isNotEmpty(safeFieldSetFromClazz)) { if(CollectionUtil.isNotEmpty(encryptFieldSet)) {
fieldCache.put(clazz, safeFieldSetFromClazz); fieldCache.put(clazz, encryptFieldSet);
} }
} }
} }
@ -76,8 +76,12 @@ public class EncryptorAutoConfiguration {
} }
// 获得一个类的加密字段集合 // 获得一个类的加密字段集合
private Set<Field> getSafeFieldSetFromClazz(Class<?> clazz) { private Set<Field> getEncryptFieldSetFromClazz(Class<?> clazz) {
Set<Field> fieldSet = new HashSet<>(); Set<Field> fieldSet = new HashSet<>();
// 判断clazz如果是接口,内部类,匿名类就直接返回
if (clazz.isInterface() || clazz.isMemberClass() || clazz.isAnonymousClass()) {
return fieldSet;
}
while (clazz != null) { while (clazz != null) {
Field[] fields = clazz.getDeclaredFields(); Field[] fields = clazz.getDeclaredFields();
fieldSet.addAll(Arrays.asList(fields)); fieldSet.addAll(Arrays.asList(fields));