Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
06106325
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,发现更多精彩内容 >>
提交
06106325
编写于
10月 10, 2010
作者:
J
Juergen Hoeller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
optimized @Bean error messages (SPR-7628, SPR-7629)
上级
4e43ba54
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
39 addition
and
18 deletion
+39
-18
org.springframework.beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java
...gframework/beans/factory/support/ConstructorResolver.java
+2
-2
org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java
...pringframework/context/annotation/ConfigurationClass.java
+14
-9
org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassMethod.java
...ramework/context/annotation/ConfigurationClassMethod.java
+23
-7
未找到文件。
org.springframework.beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java
浏览文件 @
06106325
...
...
@@ -466,7 +466,7 @@ class ConstructorResolver {
this
.
beanFactory
.
logger
.
trace
(
"Ignoring factory method ["
+
candidate
+
"] of bean '"
+
beanName
+
"': "
+
ex
);
}
if
(
i
==
candidates
.
length
-
1
&&
factoryMethod
ToUse
==
null
)
{
if
(
i
==
candidates
.
length
-
1
&&
argsHolder
ToUse
==
null
)
{
if
(
causes
!=
null
)
{
for
(
Exception
cause
:
causes
)
{
this
.
beanFactory
.
onSuppressedException
(
cause
);
...
...
@@ -547,7 +547,7 @@ class ConstructorResolver {
ambiguousFactoryMethods
);
}
if
(
explicitArgs
==
null
)
{
if
(
explicitArgs
==
null
&&
argsHolderToUse
!=
null
)
{
argsHolderToUse
.
storeCache
(
mbd
,
factoryMethodToUse
);
}
}
...
...
org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClass.java
浏览文件 @
06106325
/*
* Copyright 2002-20
09
the original author or authors.
* Copyright 2002-20
10
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.
...
...
@@ -107,8 +107,7 @@ final class ConfigurationClass {
public
void
validate
(
ProblemReporter
problemReporter
)
{
// a @Bean method may only be overloaded through inheritance. No single
// An @Bean method may only be overloaded through inheritance. No single
// @Configuration class may declare two @Bean methods with the same name.
final
char
hashDelim
=
'#'
;
Map
<
String
,
Integer
>
methodNameCounts
=
new
HashMap
<
String
,
Integer
>();
...
...
@@ -134,9 +133,10 @@ final class ConfigurationClass {
if
(
getMetadata
().
isFinal
())
{
problemReporter
.
error
(
new
FinalConfigurationProblem
());
}
for
(
ConfigurationClassMethod
method
:
this
.
methods
)
{
method
.
validate
(
problemReporter
);
}
}
for
(
ConfigurationClassMethod
method
:
this
.
methods
)
{
method
.
validate
(
problemReporter
);
}
}
...
...
@@ -152,7 +152,10 @@ final class ConfigurationClass {
return
getMetadata
().
getClassName
().
hashCode
();
}
/** Configuration classes must be non-final to accommodate CGLIB subclassing. */
/**
* Configuration classes must be non-final to accommodate CGLIB subclassing.
*/
private
class
FinalConfigurationProblem
extends
Problem
{
public
FinalConfigurationProblem
()
{
...
...
@@ -161,7 +164,10 @@ final class ConfigurationClass {
}
}
/** Bean methods on configuration classes may only be overloaded through inheritance. */
/**
* Bean methods on configuration classes may only be overloaded through inheritance.
*/
private
class
BeanMethodOverloadingProblem
extends
Problem
{
public
BeanMethodOverloadingProblem
(
String
methodName
,
int
count
)
{
...
...
@@ -171,5 +177,4 @@ final class ConfigurationClass {
}
}
}
org.springframework.context/src/main/java/org/springframework/context/annotation/ConfigurationClassMethod.java
浏览文件 @
06106325
/*
* Copyright 2002-20
09
the original author or authors.
* Copyright 2002-20
10
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.
...
...
@@ -16,8 +16,6 @@
package
org.springframework.context.annotation
;
import
static
java
.
lang
.
String
.
format
;
import
org.springframework.beans.factory.parsing.Location
;
import
org.springframework.beans.factory.parsing.Problem
;
import
org.springframework.beans.factory.parsing.ProblemReporter
;
...
...
@@ -54,18 +52,25 @@ final class ConfigurationClassMethod {
}
public
Location
getResourceLocation
()
{
return
new
Location
(
this
.
configurationClass
.
getResource
(),
metadata
);
return
new
Location
(
this
.
configurationClass
.
getResource
(),
this
.
metadata
);
}
public
void
validate
(
ProblemReporter
problemReporter
)
{
if
(
this
.
configurationClass
.
getMetadata
().
isAnnotated
(
Configuration
.
class
.
getName
())
&&
!
getMetadata
().
isOverridable
())
{
problemReporter
.
error
(
new
NonOverridableMethodError
());
if
(
this
.
configurationClass
.
getMetadata
().
isAnnotated
(
Configuration
.
class
.
getName
()))
{
if
(!
getMetadata
().
isOverridable
())
{
problemReporter
.
error
(
new
NonOverridableMethodError
());
}
}
else
{
if
(
getMetadata
().
isStatic
())
{
problemReporter
.
error
(
new
StaticMethodError
());
}
}
}
@Override
public
String
toString
()
{
return
format
(
"[%s:name=%s,declaringClass=%s]"
,
return
String
.
format
(
"[%s:name=%s,declaringClass=%s]"
,
this
.
getClass
().
getSimpleName
(),
this
.
getMetadata
().
getMethodName
(),
this
.
getMetadata
().
getDeclaringClassName
());
}
...
...
@@ -82,4 +87,15 @@ final class ConfigurationClassMethod {
}
/**
* {@link Bean} methods must at least not be static in the non-CGLIB case.
*/
private
class
StaticMethodError
extends
Problem
{
public
StaticMethodError
()
{
super
(
String
.
format
(
"Method '%s' must not be static; remove the method's static modifier to continue"
,
getMetadata
().
getMethodName
()),
getResourceLocation
());
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录