diff --git a/core/src/main/java/com/alibaba/fastjson2/util/BeanUtils.java b/core/src/main/java/com/alibaba/fastjson2/util/BeanUtils.java index bb9606c5b5..403c000ed7 100644 --- a/core/src/main/java/com/alibaba/fastjson2/util/BeanUtils.java +++ b/core/src/main/java/com/alibaba/fastjson2/util/BeanUtils.java @@ -185,6 +185,12 @@ public static String[] getKotlinConstructorParameters(Class clazz) { } public static void fields(Class objectClass, Consumer fieldReaders) { + if (TypeUtils.isProxy(objectClass)) { + Class superclass = objectClass.getSuperclass(); + fields(superclass, fieldReaders); + return; + } + Field[] fields = fieldCache.get(objectClass); if (fields == null) { fields = objectClass.getFields(); diff --git a/extension/pom.xml b/extension/pom.xml index a50cfcaaa8..1b86f35f36 100644 --- a/extension/pom.xml +++ b/extension/pom.xml @@ -173,6 +173,24 @@ spring-test test + + org.springframework.boot + spring-boot + 2.7.4 + test + + + org.springframework.boot + spring-boot-starter-web + 2.7.4 + test + + + org.springframework.boot + spring-boot-test + 2.7.4 + test + org.springframework.security spring-security-core diff --git a/core/src/test/java/com/alibaba/fastjson2/issues/Issue798.java b/extension/src/test/java/com/alibaba/fastjson2/issues/Issue798.java similarity index 50% rename from core/src/test/java/com/alibaba/fastjson2/issues/Issue798.java rename to extension/src/test/java/com/alibaba/fastjson2/issues/Issue798.java index 5344f8f89e..80cf03a26e 100644 --- a/core/src/test/java/com/alibaba/fastjson2/issues/Issue798.java +++ b/extension/src/test/java/com/alibaba/fastjson2/issues/Issue798.java @@ -3,19 +3,30 @@ import com.alibaba.fastjson2.JSON; import lombok.Data; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ActiveProfiles; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; +@SpringBootTest +@ActiveProfiles("test") public class Issue798 { + @Autowired + Config configs; + @Test public void test() { - Config config = new Config(); - assertEquals("{}", JSON.toJSONString(config)); + assertEquals("{}", JSON.toJSONString(configs)); } @Data + @Configuration + @ConfigurationProperties(prefix = "config") public static class Config { public String[] deviceCodes; public String barkPushUrl; diff --git a/extension/src/test/resources/application.yml b/extension/src/test/resources/application.yml new file mode 100644 index 0000000000..d8ba5cf4a7 --- /dev/null +++ b/extension/src/test/resources/application.yml @@ -0,0 +1,9 @@ +config: + deviceCodes: + - 'M' + - 'Q' + barkPushUrl: https://baidu.com + barkPushToken: token + location: 广东 深圳 南山区 + storeNameWhiteList: + - '深圳湾'