我正在读关于springframework5的文章。
如书中所述 @Scope
注解代码如下所示
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Scope {
@AliasFor("scopeName")
String value() default "";
@AliasFor("value")
String scopeName() default "";
ScopedProxyMode proxyMode() default ScopedProxyMode.DEFAULT;
}
然后他们提到以下三个电话是相同的:
@范围(configurablebeanfactory.scope\u singleton)
@范围(值=configurablebeanfactory.scope\u singleton)
@范围(scopename=configurablebeanfactory.scope\u singleton)
我明白了 value
以及 scopeName
是可互换的,但据我所知,它们并不是指 proxyMode
.
我原以为第一个和第二个、第三个不一样,我相信这是真的:
值=“”;socopename=“”;proxymode=范围\单例
value=“scope\u singleton”;socopename=“范围\单例”;proxymode=默认值
value=“scope\u singleton”;socopename=“范围\单例”;proxymode=默认值
引擎盖下发生了什么,这三个是一样的?
谢谢
1条答案
按热度按时间syqv5f0l1#
作为
value()
说:的别名
scopeName()
.这仅仅是因为使用注解的代码使它如此。它是调用
scopeName()
会掉头打电话的value()
如果第一次调用返回默认值""
.java语言规范使以下内容相同:
java语言规范,第9.7.3节。单元素注解,表示:
单元素注解是设计用于单元素注解类型的速记(§9.6.1).
SingleElement注解:
@类型名(elementvalue)
它是普通注解的简写:
@类型名(value=elementvalue)