Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
5d586760
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 搜索 >>
提交
5d586760
编写于
9月 25, 2019
作者:
J
Juergen Hoeller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Consistent equality check for parent name and indexed arguments
Closes gh-23593
上级
18ae3790
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
66 addition
and
26 deletion
+66
-26
spring-beans/src/main/java/org/springframework/beans/factory/config/ConstructorArgumentValues.java
...ework/beans/factory/config/ConstructorArgumentValues.java
+2
-2
spring-beans/src/main/java/org/springframework/beans/factory/support/GenericBeanDefinition.java
...ramework/beans/factory/support/GenericBeanDefinition.java
+10
-2
spring-beans/src/test/java/org/springframework/beans/factory/DefaultListableBeanFactoryTests.java
...mework/beans/factory/DefaultListableBeanFactoryTests.java
+34
-21
spring-beans/src/test/java/org/springframework/beans/factory/support/BeanDefinitionTests.java
...gframework/beans/factory/support/BeanDefinitionTests.java
+20
-1
未找到文件。
spring-beans/src/main/java/org/springframework/beans/factory/config/ConstructorArgumentValues.java
浏览文件 @
5d586760
/*
* Copyright 2002-201
6
the original author or authors.
* Copyright 2002-201
9
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -401,7 +401,7 @@ public class ConstructorArgumentValues {
for
(
Map
.
Entry
<
Integer
,
ValueHolder
>
entry
:
this
.
indexedArgumentValues
.
entrySet
())
{
ValueHolder
vh1
=
entry
.
getValue
();
ValueHolder
vh2
=
that
.
indexedArgumentValues
.
get
(
entry
.
getKey
());
if
(!
vh1
.
contentEquals
(
vh2
))
{
if
(
vh2
==
null
||
!
vh1
.
contentEquals
(
vh2
))
{
return
false
;
}
}
...
...
spring-beans/src/main/java/org/springframework/beans/factory/support/GenericBeanDefinition.java
浏览文件 @
5d586760
/*
* Copyright 2002-201
6
the original author or authors.
* Copyright 2002-201
9
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -17,6 +17,7 @@
package
org.springframework.beans.factory.support
;
import
org.springframework.beans.factory.config.BeanDefinition
;
import
org.springframework.util.ObjectUtils
;
/**
* GenericBeanDefinition is a one-stop shop for standard bean definition purposes.
...
...
@@ -81,7 +82,14 @@ public class GenericBeanDefinition extends AbstractBeanDefinition {
@Override
public
boolean
equals
(
Object
other
)
{
return
(
this
==
other
||
(
other
instanceof
GenericBeanDefinition
&&
super
.
equals
(
other
)));
if
(
this
==
other
)
{
return
true
;
}
if
(!(
other
instanceof
GenericBeanDefinition
))
{
return
false
;
}
GenericBeanDefinition
that
=
(
GenericBeanDefinition
)
other
;
return
(
ObjectUtils
.
nullSafeEquals
(
this
.
parentName
,
that
.
parentName
)
&&
super
.
equals
(
other
));
}
@Override
...
...
spring-beans/src/test/java/org/springframework/beans/factory/DefaultListableBeanFactoryTests.java
浏览文件 @
5d586760
/*
* Copyright 2002-201
8
the original author or authors.
* Copyright 2002-201
9
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -811,26 +811,24 @@ public class DefaultListableBeanFactoryTests {
}
@Test
public
void
test
BeanDefinitionOverrid
ing
()
{
public
void
test
AliasChain
ing
()
{
DefaultListableBeanFactory
lbf
=
new
DefaultListableBeanFactory
();
lbf
.
registerBeanDefinition
(
"test"
,
new
RootBeanDefinition
(
TestBean
.
class
));
lbf
.
registerBeanDefinition
(
"test"
,
new
RootBeanDefinition
(
NestedTestBean
.
class
));
lbf
.
registerAlias
(
"otherTest"
,
"test2"
);
lbf
.
registerAlias
(
"test"
,
"test2"
);
assertTrue
(
lbf
.
getBean
(
"test"
)
instanceof
NestedTestBean
);
assertTrue
(
lbf
.
getBean
(
"test2"
)
instanceof
NestedTestBean
);
lbf
.
registerAlias
(
"test"
,
"testAlias"
);
lbf
.
registerAlias
(
"testAlias"
,
"testAlias2"
);
lbf
.
registerAlias
(
"testAlias2"
,
"testAlias3"
);
Object
bean
=
lbf
.
getBean
(
"test"
);
assertSame
(
bean
,
lbf
.
getBean
(
"testAlias"
));
assertSame
(
bean
,
lbf
.
getBean
(
"testAlias2"
));
assertSame
(
bean
,
lbf
.
getBean
(
"testAlias3"
));
}
@Test
public
void
testBeanDefinition
Removal
()
{
public
void
testBeanDefinition
Overriding
()
{
DefaultListableBeanFactory
lbf
=
new
DefaultListableBeanFactory
();
lbf
.
setAllowBeanDefinitionOverriding
(
false
);
lbf
.
registerBeanDefinition
(
"test"
,
new
RootBeanDefinition
(
TestBean
.
class
));
lbf
.
registerAlias
(
"test"
,
"test2"
);
lbf
.
preInstantiateSingletons
();
lbf
.
removeBeanDefinition
(
"test"
);
lbf
.
removeAlias
(
"test2"
);
lbf
.
registerBeanDefinition
(
"test"
,
new
RootBeanDefinition
(
NestedTestBean
.
class
));
lbf
.
registerAlias
(
"otherTest"
,
"test2"
);
lbf
.
registerAlias
(
"test"
,
"test2"
);
assertTrue
(
lbf
.
getBean
(
"test"
)
instanceof
NestedTestBean
);
assertTrue
(
lbf
.
getBean
(
"test2"
)
instanceof
NestedTestBean
);
...
...
@@ -863,16 +861,31 @@ public class DefaultListableBeanFactoryTests {
}
@Test
public
void
testAliasChaining
()
{
public
void
beanDefinitionOverridingWithConstructorArgumentMismatch
()
{
DefaultListableBeanFactory
lbf
=
new
DefaultListableBeanFactory
();
RootBeanDefinition
bd1
=
new
RootBeanDefinition
(
NestedTestBean
.
class
);
bd1
.
getConstructorArgumentValues
().
addIndexedArgumentValue
(
1
,
"value1"
);
lbf
.
registerBeanDefinition
(
"test"
,
bd1
);
RootBeanDefinition
bd2
=
new
RootBeanDefinition
(
NestedTestBean
.
class
);
bd2
.
getConstructorArgumentValues
().
addIndexedArgumentValue
(
0
,
"value0"
);
lbf
.
registerBeanDefinition
(
"test"
,
bd2
);
assertTrue
(
lbf
.
getBean
(
"test"
)
instanceof
NestedTestBean
);
assertEquals
(
"value0"
,
lbf
.
getBean
(
"test"
,
NestedTestBean
.
class
).
getCompany
());
}
@Test
public
void
testBeanDefinitionRemoval
()
{
DefaultListableBeanFactory
lbf
=
new
DefaultListableBeanFactory
();
lbf
.
setAllowBeanDefinitionOverriding
(
false
);
lbf
.
registerBeanDefinition
(
"test"
,
new
RootBeanDefinition
(
TestBean
.
class
));
lbf
.
registerAlias
(
"test"
,
"test2"
);
lbf
.
preInstantiateSingletons
();
lbf
.
removeBeanDefinition
(
"test"
);
lbf
.
removeAlias
(
"test2"
);
lbf
.
registerBeanDefinition
(
"test"
,
new
RootBeanDefinition
(
NestedTestBean
.
class
));
lbf
.
registerAlias
(
"test"
,
"testAlias"
);
lbf
.
registerAlias
(
"testAlias"
,
"testAlias2"
);
lbf
.
registerAlias
(
"testAlias2"
,
"testAlias3"
);
Object
bean
=
lbf
.
getBean
(
"test"
);
assertSame
(
bean
,
lbf
.
getBean
(
"testAlias"
));
assertSame
(
bean
,
lbf
.
getBean
(
"testAlias2"
));
assertSame
(
bean
,
lbf
.
getBean
(
"testAlias3"
));
lbf
.
registerAlias
(
"test"
,
"test2"
);
assertTrue
(
lbf
.
getBean
(
"test"
)
instanceof
NestedTestBean
);
assertTrue
(
lbf
.
getBean
(
"test2"
)
instanceof
NestedTestBean
);
}
@Test
...
...
spring-beans/src/test/java/org/springframework/beans/factory/support/BeanDefinitionTests.java
浏览文件 @
5d586760
/*
* Copyright 2002-201
6
the original author or authors.
* Copyright 2002-201
9
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -100,6 +100,25 @@ public class BeanDefinitionTests {
assertTrue
(
bd
.
hashCode
()
==
otherBd
.
hashCode
());
}
@Test
public
void
genericBeanDefinitionEquality
()
{
GenericBeanDefinition
bd
=
new
GenericBeanDefinition
();
bd
.
setParentName
(
"parent"
);
bd
.
setScope
(
"request"
);
bd
.
setAbstract
(
true
);
bd
.
setLazyInit
(
true
);
GenericBeanDefinition
otherBd
=
new
GenericBeanDefinition
();
otherBd
.
setScope
(
"request"
);
otherBd
.
setAbstract
(
true
);
otherBd
.
setLazyInit
(
true
);
assertTrue
(!
bd
.
equals
(
otherBd
));
assertTrue
(!
otherBd
.
equals
(
bd
));
otherBd
.
setParentName
(
"parent"
);
assertTrue
(
bd
.
equals
(
otherBd
));
assertTrue
(
otherBd
.
equals
(
bd
));
assertTrue
(
bd
.
hashCode
()
==
otherBd
.
hashCode
());
}
@Test
public
void
beanDefinitionHolderEquality
()
{
RootBeanDefinition
bd
=
new
RootBeanDefinition
(
TestBean
.
class
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录