0

假设我们有一堂课

@RequestScope 
public abstract class A {
    int a;
}

和扩展上述类的另一个类

@Service 
public class B extends A {
    public int getA () { return a; }    
}

此类 B 的变量(它从 A 扩展)是请求范围的变量吗?

UPD

我正在浏览弹簧代码,它说

/** * Constant for the default scope name: {@code ""}, equivalent to singleton * status unless overridden from a parent bean definition (if applicable). */ public static final String SCOPE_DEFAULT = "";

还,

((AbstractBeanDefinition)((AnnotationConfigEmbeddedWebApplicationContext) ctx).
getBeanDefinition("b")).scope

返回"singleton"

@RequestScope但是如果我用这个属性更改标记 B 类""
,我假设sigleton又是

4

1 回答 1

0

要成为可继承的注解,必须用@Inherited注解进行标记。看一下源代码@RequestScope

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Scope(WebApplicationContext.SCOPE_REQUEST)
public @interface RequestScope {

    /**
     * Alias for {@link Scope#proxyMode}.
     * <p>Defaults to {@link ScopedProxyMode#TARGET_CLASS}.
     */
    @AliasFor(annotation = Scope.class)
    ScopedProxyMode proxyMode() default ScopedProxyMode.TARGET_CLASS;

}

它没有用 标记@Inherited。因此它不会影响子类。这意味着您示例中的类变量B不是请求范围,而是单例,因为它应该是默认的。您可以在此处找到有关预定义注释的更多详细信息。

于 2020-03-21T06:29:15.133 回答