From 54776ec288e23e17304f844996cdb94b3df19bd8 Mon Sep 17 00:00:00 2001 From: why Date: Thu, 18 Jun 2020 11:39:21 +0800 Subject: [PATCH] ConstructorResolver.resolveConstructorArguments() return value issue https://github.com/spring-projects/spring-framework/issues/25130 --- .../ConstructorArgWithIndexDemo.java | 23 ++++++++++++++ .../constructorArgWithIndex/DmzService.java | 19 ++++++++++++ .../FactoryObject.java | 30 +++++++++++++++++++ .../constructorArgWithIndex/OrderService.java | 8 +++++ .../cases/constructorArgWithIndex.xml | 19 ++++++++++++ 5 files changed, 99 insertions(+) create mode 100644 spring-framework/src/main/java/cases/constructorArgWithIndex/ConstructorArgWithIndexDemo.java create mode 100644 spring-framework/src/main/java/cases/constructorArgWithIndex/DmzService.java create mode 100644 spring-framework/src/main/java/cases/constructorArgWithIndex/FactoryObject.java create mode 100644 spring-framework/src/main/java/cases/constructorArgWithIndex/OrderService.java create mode 100644 spring-framework/src/main/resources/META-INF/cases/constructorArgWithIndex.xml diff --git a/spring-framework/src/main/java/cases/constructorArgWithIndex/ConstructorArgWithIndexDemo.java b/spring-framework/src/main/java/cases/constructorArgWithIndex/ConstructorArgWithIndexDemo.java new file mode 100644 index 0000000..8313f2d --- /dev/null +++ b/spring-framework/src/main/java/cases/constructorArgWithIndex/ConstructorArgWithIndexDemo.java @@ -0,0 +1,23 @@ +package cases.constructorArgWithIndex; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +/** + * https://mp.weixin.qq.com/s/bIpnXFTXuNq5WzBlRdVVNQ + *

文章修复了一个代码的问题,当时我测试的时候并没有发现修改之前会有异常,可能是修复之后使代码更加合理吧。 + *

文章修复的问题 5.2.7 发布了,issues: https://github.com/spring-projects/spring-framework/issues/25130 + * + * @author wanghuanyu + */ +public class ConstructorArgWithIndexDemo { + + public static void main(String[] args) { + ApplicationContext applicationContext = new ClassPathXmlApplicationContext( + "classpath:META-INF/cases/constructorArgWithIndex.xml"); + + DmzService service = applicationContext.getBean("dmzService", DmzService.class); + System.out.println(service); + + } +} diff --git a/spring-framework/src/main/java/cases/constructorArgWithIndex/DmzService.java b/spring-framework/src/main/java/cases/constructorArgWithIndex/DmzService.java new file mode 100644 index 0000000..f5ef575 --- /dev/null +++ b/spring-framework/src/main/java/cases/constructorArgWithIndex/DmzService.java @@ -0,0 +1,19 @@ +package cases.constructorArgWithIndex; + +/** + * @author wanghuanyu + */ +public class DmzService { + + private String name; + private OrderService orderService; + + public DmzService(OrderService orderService, String name) { + this.orderService = orderService; + this.name = name; + } + + public DmzService(String name) { + this.name = name; + } +} diff --git a/spring-framework/src/main/java/cases/constructorArgWithIndex/FactoryObject.java b/spring-framework/src/main/java/cases/constructorArgWithIndex/FactoryObject.java new file mode 100644 index 0000000..2d0c836 --- /dev/null +++ b/spring-framework/src/main/java/cases/constructorArgWithIndex/FactoryObject.java @@ -0,0 +1,30 @@ +package cases.constructorArgWithIndex; + +import java.util.Date; + +/** + * @author wanghuanyu + */ +public class FactoryObject { + + public DmzService getDmz(String name, int age, Date birthDay, OrderService orderService) { + return new DmzService(orderService, name); + } + + public DmzService getDmz(String name, Date birthday) { + return new DmzService(name); + } + +// public DmzService getDmz(String name, OrderService orderService) { +// return new DmzService(name); +// } + + public DmzService getDmz(String name, int age) { + return new DmzService(name); + } + + public DmzService getDmz(String name) { + return new DmzService(name); + } + +} \ No newline at end of file diff --git a/spring-framework/src/main/java/cases/constructorArgWithIndex/OrderService.java b/spring-framework/src/main/java/cases/constructorArgWithIndex/OrderService.java new file mode 100644 index 0000000..e29deb8 --- /dev/null +++ b/spring-framework/src/main/java/cases/constructorArgWithIndex/OrderService.java @@ -0,0 +1,8 @@ +package cases.constructorArgWithIndex; + +/** + * @author wanghuanyu + */ +public class OrderService { + +} diff --git a/spring-framework/src/main/resources/META-INF/cases/constructorArgWithIndex.xml b/spring-framework/src/main/resources/META-INF/cases/constructorArgWithIndex.xml new file mode 100644 index 0000000..403774c --- /dev/null +++ b/spring-framework/src/main/resources/META-INF/cases/constructorArgWithIndex.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + +