Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
20fc7e17
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 搜索 >>
提交
20fc7e17
编写于
9月 25, 2019
作者:
J
Juergen Hoeller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Consistent equality check for parent name and indexed arguments
Closes gh-23593
上级
31c88146
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
85 addition
and
44 deletion
+85
-44
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
+51
-39
spring-beans/src/test/java/org/springframework/beans/factory/support/BeanDefinitionTests.java
...gframework/beans/factory/support/BeanDefinitionTests.java
+22
-1
未找到文件。
spring-beans/src/main/java/org/springframework/beans/factory/config/ConstructorArgumentValues.java
浏览文件 @
20fc7e17
/*
* 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.
...
...
@@ -408,7 +408,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
浏览文件 @
20fc7e17
/*
* Copyright 2002-201
7
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.
...
...
@@ -18,6 +18,7 @@ package org.springframework.beans.factory.support;
import
org.springframework.beans.factory.config.BeanDefinition
;
import
org.springframework.lang.Nullable
;
import
org.springframework.util.ObjectUtils
;
/**
* GenericBeanDefinition is a one-stop shop for standard bean definition purposes.
...
...
@@ -84,7 +85,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
浏览文件 @
20fc7e17
...
...
@@ -794,6 +794,18 @@ public class DefaultListableBeanFactoryTests {
lbf
.
registerAlias
(
"test"
,
"test3"
);
}
@Test
public
void
testAliasChaining
()
{
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"
));
}
@Test
public
void
testBeanDefinitionOverriding
()
{
lbf
.
registerBeanDefinition
(
"test"
,
new
RootBeanDefinition
(
TestBean
.
class
));
...
...
@@ -804,6 +816,45 @@ public class DefaultListableBeanFactoryTests {
assertTrue
(
lbf
.
getBean
(
"test2"
)
instanceof
NestedTestBean
);
}
@Test
public
void
testBeanDefinitionOverridingNotAllowed
()
{
lbf
.
setAllowBeanDefinitionOverriding
(
false
);
BeanDefinition
oldDef
=
new
RootBeanDefinition
(
TestBean
.
class
);
BeanDefinition
newDef
=
new
RootBeanDefinition
(
NestedTestBean
.
class
);
lbf
.
registerBeanDefinition
(
"test"
,
oldDef
);
try
{
lbf
.
registerBeanDefinition
(
"test"
,
newDef
);
fail
(
"Should have thrown BeanDefinitionOverrideException"
);
}
catch
(
BeanDefinitionOverrideException
ex
)
{
assertEquals
(
"test"
,
ex
.
getBeanName
());
assertSame
(
newDef
,
ex
.
getBeanDefinition
());
assertSame
(
oldDef
,
ex
.
getExistingDefinition
());
}
}
@Test
public
void
testBeanDefinitionOverridingWithAlias
()
{
lbf
.
registerBeanDefinition
(
"test"
,
new
RootBeanDefinition
(
TestBean
.
class
));
lbf
.
registerAlias
(
"test"
,
"testAlias"
);
lbf
.
registerBeanDefinition
(
"test"
,
new
RootBeanDefinition
(
NestedTestBean
.
class
));
lbf
.
registerAlias
(
"test"
,
"testAlias"
);
assertTrue
(
lbf
.
getBean
(
"test"
)
instanceof
NestedTestBean
);
assertTrue
(
lbf
.
getBean
(
"testAlias"
)
instanceof
NestedTestBean
);
}
@Test
public
void
beanDefinitionOverridingWithConstructorArgumentMismatch
()
{
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
()
{
lbf
.
setAllowBeanDefinitionOverriding
(
false
);
...
...
@@ -844,45 +895,6 @@ public class DefaultListableBeanFactoryTests {
lbf
.
removeBeanDefinition
(
name
);
}
@Test
public
void
testBeanDefinitionOverridingNotAllowed
()
{
lbf
.
setAllowBeanDefinitionOverriding
(
false
);
BeanDefinition
oldDef
=
new
RootBeanDefinition
(
TestBean
.
class
);
BeanDefinition
newDef
=
new
RootBeanDefinition
(
NestedTestBean
.
class
);
lbf
.
registerBeanDefinition
(
"test"
,
oldDef
);
try
{
lbf
.
registerBeanDefinition
(
"test"
,
newDef
);
fail
(
"Should have thrown BeanDefinitionOverrideException"
);
}
catch
(
BeanDefinitionOverrideException
ex
)
{
assertEquals
(
"test"
,
ex
.
getBeanName
());
assertSame
(
newDef
,
ex
.
getBeanDefinition
());
assertSame
(
oldDef
,
ex
.
getExistingDefinition
());
}
}
@Test
public
void
testBeanDefinitionOverridingWithAlias
()
{
lbf
.
registerBeanDefinition
(
"test"
,
new
RootBeanDefinition
(
TestBean
.
class
));
lbf
.
registerAlias
(
"test"
,
"testAlias"
);
lbf
.
registerBeanDefinition
(
"test"
,
new
RootBeanDefinition
(
NestedTestBean
.
class
));
lbf
.
registerAlias
(
"test"
,
"testAlias"
);
assertTrue
(
lbf
.
getBean
(
"test"
)
instanceof
NestedTestBean
);
assertTrue
(
lbf
.
getBean
(
"testAlias"
)
instanceof
NestedTestBean
);
}
@Test
public
void
testAliasChaining
()
{
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"
));
}
@Test
public
void
testBeanReferenceWithNewSyntax
()
{
Properties
p
=
new
Properties
();
...
...
spring-beans/src/test/java/org/springframework/beans/factory/support/BeanDefinitionTests.java
浏览文件 @
20fc7e17
/*
* 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,27 @@ 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
);
boolean
condition1
=
!
bd
.
equals
(
otherBd
);
assertTrue
(
condition1
);
boolean
condition
=
!
otherBd
.
equals
(
bd
);
assertTrue
(
condition
);
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录