为什么这三个注解的调用是一样的呢?
Why is the call of this three annotations is the same?
我正在阅读 Spring 框架 5。
如书中所述,@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;
}
然后他们提到以下三个调用是相同的:
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
@Scope(scopeName = ConfigurableBeanFactory.SCOPE_SINGLETON)
我知道 value
和 scopeName
可以互换,但据我所知,它们并不是指 proxyMode
.
我原以为第一个与第二个和第三个不同,这是我认为是真的:
value="" ; socopeName =""; proxyMode = SCOPE_SINGLETON
value="SCOPE_SINGLETON" ; socopeName ="SCOPE_SINGLETON"; proxyMode = DEFAULT
value="SCOPE_SINGLETON" ; socopeName ="SCOPE_SINGLETON"; proxyMode = DEFAULT
引擎盖下发生了什么,这三个是相同的?
谢谢
正如 value()
的 javadoc 所说:
Alias for scopeName()
.
这只是因为 使用 注释的代码使它如此。如果第一个调用返回默认值 ""
.
,则调用 scopeName()
的代码将返回并调用 value()
Java 语言规范使以下内容相同:
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
Java 语言规范,第 9.7.3. Single-Element Annotations 节说:
A single-element annotation, is a shorthand designed for use with single-element annotation types (§9.6.1).
SingleElementAnnotation:
@ TypeName ( ElementValue )
普通注解为shorthand:
@TypeName(value = ElementValue)
我正在阅读 Spring 框架 5。
如书中所述,@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;
}
然后他们提到以下三个调用是相同的:
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
@Scope(scopeName = ConfigurableBeanFactory.SCOPE_SINGLETON)
我知道 value
和 scopeName
可以互换,但据我所知,它们并不是指 proxyMode
.
我原以为第一个与第二个和第三个不同,这是我认为是真的:
value="" ; socopeName =""; proxyMode = SCOPE_SINGLETON
value="SCOPE_SINGLETON" ; socopeName ="SCOPE_SINGLETON"; proxyMode = DEFAULT
value="SCOPE_SINGLETON" ; socopeName ="SCOPE_SINGLETON"; proxyMode = DEFAULT
引擎盖下发生了什么,这三个是相同的?
谢谢
正如 value()
的 javadoc 所说:
Alias for
scopeName()
.
这只是因为 使用 注释的代码使它如此。如果第一个调用返回默认值 ""
.
scopeName()
的代码将返回并调用 value()
Java 语言规范使以下内容相同:
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
Java 语言规范,第 9.7.3. Single-Element Annotations 节说:
A single-element annotation, is a shorthand designed for use with single-element annotation types (§9.6.1).
SingleElementAnnotation:
@ TypeName ( ElementValue )普通注解为shorthand:
@TypeName(value = ElementValue)