Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
1eabe2b4
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
1eabe2b4
编写于
7月 27, 2009
作者:
J
Juergen Hoeller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
lenientConstructorResolution flag applies to factory methods as well
上级
e85ad67f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
35 addition
and
1 deletion
+35
-1
org.springframework.beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java
...gframework/beans/factory/support/ConstructorResolver.java
+6
-0
org.springframework.context/src/test/java/org/springframework/beans/factory/xml/XmlBeanFactoryTests-constructorArg.xml
.../beans/factory/xml/XmlBeanFactoryTests-constructorArg.xml
+6
-1
org.springframework.context/src/test/java/org/springframework/beans/factory/xml/XmlBeanFactoryTests.java
...pringframework/beans/factory/xml/XmlBeanFactoryTests.java
+23
-0
未找到文件。
org.springframework.beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java
浏览文件 @
1eabe2b4
...
...
@@ -443,6 +443,12 @@ class ConstructorResolver {
argsToUse
=
args
.
arguments
;
minTypeDiffWeight
=
typeDiffWeight
;
}
else
if
(
typeDiffWeight
<
Integer
.
MAX_VALUE
&&
typeDiffWeight
==
minTypeDiffWeight
&&
!
mbd
.
isLenientConstructorResolution
())
{
throw
new
BeanCreationException
(
mbd
.
getResourceDescription
(),
beanName
,
"Ambiguous factory method matches found in bean '"
+
beanName
+
"' "
+
"(hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)"
);
}
}
}
...
...
org.springframework.context/src/test/java/org/springframework/beans/factory/xml/XmlBeanFactoryTests-constructorArg.xml
浏览文件 @
1eabe2b4
...
...
@@ -162,7 +162,7 @@
<constructor-arg
value=
"NaN"
type=
"double"
/>
</bean>
<bean
id=
"beanWithDoubleBoolean"
class=
"org.springframework.beans.factory.xml.XmlBeanFactoryTests$DoubleBooleanConstructorBean"
autowire=
"constructor"
scope=
"prototype"
>
<bean
id=
"beanWithDoubleBoolean"
class=
"org.springframework.beans.factory.xml.XmlBeanFactoryTests$DoubleBooleanConstructorBean"
autowire=
"constructor"
scope=
"prototype"
factory-method=
"create"
>
<constructor-arg
type=
"java.lang.Boolean"
><value>
true
</value></constructor-arg>
</bean>
...
...
@@ -175,6 +175,11 @@
<constructor-arg
index=
"1"
><value>
true
</value></constructor-arg>
</bean>
<bean
id=
"beanWithDoubleBooleanNoTypeFactoryMethod"
class=
"org.springframework.beans.factory.xml.XmlBeanFactoryTests$DoubleBooleanConstructorBean"
scope=
"prototype"
factory-method=
"create"
>
<constructor-arg
index=
"0"
><value>
false
</value></constructor-arg>
<constructor-arg
index=
"1"
><value>
true
</value></constructor-arg>
</bean>
<bean
id=
"string"
class=
"java.lang.String"
autowire-candidate=
"false"
>
<constructor-arg><value
type=
"java.lang.String"
>
test
</value></constructor-arg>
</bean>
...
...
org.springframework.context/src/test/java/org/springframework/beans/factory/xml/XmlBeanFactoryTests.java
浏览文件 @
1eabe2b4
...
...
@@ -1380,6 +1380,21 @@ public final class XmlBeanFactoryTests {
}
}
public
@Test
void
testDoubleBooleanNoTypeFactoryMethod
()
{
XmlBeanFactory
xbf
=
new
XmlBeanFactory
(
CONSTRUCTOR_ARG_CONTEXT
);
AbstractBeanDefinition
bd
=
(
AbstractBeanDefinition
)
xbf
.
getBeanDefinition
(
"beanWithDoubleBooleanNoTypeFactoryMethod"
);
bd
.
setLenientConstructorResolution
(
false
);
try
{
xbf
.
getBean
(
"beanWithDoubleBooleanNoTypeFactoryMethod"
);
fail
(
"Should have thrown BeanCreationException"
);
}
catch
(
BeanCreationException
ex
)
{
// expected
ex
.
printStackTrace
();
assertTrue
(
ex
.
getMostSpecificCause
().
getMessage
().
contains
(
"Ambiguous"
));
}
}
public
@Test
void
testStringConstructor
()
{
XmlBeanFactory
xbf
=
new
XmlBeanFactory
(
CONSTRUCTOR_ARG_CONTEXT
);
AbstractBeanDefinition
bd
=
(
AbstractBeanDefinition
)
xbf
.
getBeanDefinition
(
"string"
);
...
...
@@ -1632,6 +1647,14 @@ public final class XmlBeanFactoryTests {
public
DoubleBooleanConstructorBean
(
String
s1
,
String
s2
)
{
throw
new
IllegalStateException
(
"Don't pick this constructor"
);
}
public
static
DoubleBooleanConstructorBean
create
(
Boolean
b1
,
Boolean
b2
)
{
return
new
DoubleBooleanConstructorBean
(
b1
,
b2
);
}
public
static
DoubleBooleanConstructorBean
create
(
String
s1
,
String
s2
)
{
return
new
DoubleBooleanConstructorBean
(
s1
,
s2
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录