JDK8源码阅读笔记
切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页

Resource


Resource注解用于标记一个资源是应用所需要的。该注解可能应用于某个应用组件类,或者组件类的属性或方法。当该注解用于某应用组件的属性或者方法时,容器会在初始化该组件时注入一个请求资源的实例到该组件。如果该注解应用于一个组件类, 该注解会定义一个资源,然后应用可能在运行时查找它。

尽管该注解没有被标记为Inherited,开发工具仍需检查所有组件类的超类,以发现超类中所有使用该注解的地方。这些注解表明应用组件需要这些资源。注意,这些组件可能出现在超类的私有属性或方法上,容器在这些场景下也需要执行注入。

@Target({TYPE, FIELD, METHOD})
@Retention(RUNTIME)
public @interface Resource {

}

1. String name() default “”;

资源的JNDI名称。该注解标注到到字段上时,默认值为字段名。标注到方法上时,默认值是与该方法对应的JavaBeans属性名。标注到类上时,没有默认值,该属性必须指定。

2. String lookup() default “”;

引用指向的资源的名称。它可以使用全局JNDI名称链接到任何兼容的资源。

3. Class type() default java.lang.Object.class;

资源的Java类型。该注解标注到字段上时,默认值是字段的类型。标注到方法上时,默认值是JavaBeans属性的类型。标注到类上时,没有默认值,该属性必须指定。

4. enum AuthenticationType

资源的两种可能的身份验证类型。

enum AuthenticationType {
        CONTAINER,
        APPLICATION
}

5. AuthenticationType authenticationType() default AuthenticationType.CONTAINER;

用于此资源的身份验证类型。可以为代表任何支持类型的连接工厂的资源指定,而不能为其他类型的资源指定。

6. boolean shareable() default true;

标识此资源是否可以在此组件和其他组件之间共享。可以为代表任何支持类型的连接工厂的资源指定,而不能为其他类型的资源指定。

7. String mappedName() default “”;

此资源应映射到的产品特定名称。此资源的名称由name元素定义或采用的默认值,它是在使用该资源的应用程序组件中的本地名称。(它是JNDI命名空间java:comp/env中的一个名称。)许多应用服务器都提供了一种将这些本地名称映射到应用服务器已知资源名称的方法。此映射名称通常是全局JNDI名称,但也可以是任何形式的名称。

应用程序服务器不需要支持任何特定形式或类型的映射名称,也不需要具备使用映射名称的能力。映射名称取决于产品,通常取决于安装。映射名称的使用不可移植。

8. String description() default “”;

此资源的描述。描述应使用部署应用程序的系统的默认语言。该描述可以提供给开发者,以帮助选择正确的资源。