zoukankan      html  css  js  c++  java
  • ANNOTATION and analyse hello1.java

    一、What is annotation?

    annotation的中文意思就是注解,注释的意思。注解也属于一种类型。它是在 Java SE 5.0 版本中开始引入的概念。它的形式跟接口很类似,不过前面多了一个 @ 符号。

    维基百科的解释:

    Java计算机编程语言中注释是一种可以添加到Java源代码的语法元数据可以注释类,方法,变量,参数和包。Javadoc标签一样,可以从源文件中读取Java注释。Javadoc标记不同,Java注释也可以嵌入和读取编译器生成的类文件这允许Java VM在运行时保留注释并通过反射读取可以用Java中的现有元注释创建元注释。

    注释用于提供有关程序的补充信息。

    • 注释以' @ ' 开头
    • 注释不会更改已编译程序的操作。
    • 注释有助于将元数据(信息)与程序元素(例如实例变量,构造函数,方法,类等)相关联
    • 注释不是纯注释,因为它们可以改变编译器处理程序的方式

    类别:

    1.标记注释:

    唯一的目的是标记声明。这些注释不包含任何成员,也不包含任何数据。因此,它作为注释的存在就足够了。由于标记界面不包含任何成员,因此只需确定它是否存在就足够了。

    例如: -  @Test()

    2.单值注释:

    这些注释仅包含一个成员,并允许使用指定成员值的简写形式。我们只需要在应用注释时指定该成员的值,而不需要指定成员的名称。但是,为了使用此简写,成员的名称必须是值。

    例如: -  @Test(“testing”);

    3.完整注释:

    这些注释由多个数据成员/名称,值,对组成。

    例如: - @TestAnnotation(owner =“Rahul”,value =“Class Geeks”)

    Example:

    1.@named:

    javax.inject 

    public @interface Named

    通过@Named标注处理单接口与多个实现类的注入

    其具体使用方法为:

        使用 @Named 标记 Module 中生成类实例的方法

        使用 @Named 标记目标类中相应类实例

        用法示例:

         public class Car {
           @Inject @Named("driver") Seat driverSeat;
           @Inject @Named("passenger") Seat passengerSeat;
           ...
         }

    2.@requestscope:

    javax.enterprise.context

    public @interface RequestScoped

    指定bean是请求范围的。

    请求范围处于活动状态:

    • Web应用程序中任何servlet service()方法期间,在任何servlet过滤器doFilter()方法期间以及当容器调用任何ServletRequestListener 或AsyncListener时
    • 在任何Java EE Web服务调用期间,
    • 在任何EJB的任何远程方法调用期间,在任何EJB的任何异步方法调用期间,在对EJB超时方法的任何调用期间以及在向任何EJB消息驱动的bean传递消息期间,以及
    • 在从MessageEistener传递到从Java EE组件环境获取的JMS主题或队列的任何消息传递期间。

    请求上下文被销毁:

    • 在servlet请求结束时,在service() 方法之后,所有doFilter()方法以及所有requestDestroyed() 和onComplete()通知都返回,
    • Web服务调用完成后,
    • 在EJB远程方法调用之后,异步方法调用,超时或消息传递完成,或
    • 邮件传递到MessageListener 完成后。

    3.@mode

    javax.enterprise.inject

    public @interface Model
    用于bean的内置构造型,用于定义MVC Web应用程序体系结构(如JSF)的模型层


    二、Hello1.java
    //注明包名
    package javaeetutorial.hello1;
    //引入两个包
    import javax.enterprise.context.RequestScoped;
    import javax.inject.Named;
    //采用装饰器
    @Named          //生成的bean名称和类名称一样
    @RequestScoped         //指定bean是请求范围的
    //创建hello类
    public class Hello {

        private String name;          //定义一个私有string类型的变量name

        public Hello() {             //定义构造函数
        }

        public String getName() {      //定义getName()函数
            return name;          //返回name的值
        }

        public void setName(String user_name) {      //定义setName函数
            this.name = user_name;             //将参数的name值赋值给hello的对象
        }
    }
     


    ---恢复内容结束---

  • 相关阅读:
    反转链表 16
    CodeForces 701A Cards
    hdu 1087 Super Jumping! Jumping! Jumping!(动态规划)
    hdu 1241 Oil Deposits(水一发,自我的DFS)
    CodeForces 703B(容斥定理)
    poj 1067 取石子游戏(威佐夫博奕(Wythoff Game))
    ACM 马拦过河卒(动态规划)
    hdu 1005 Number Sequence
    51nod 1170 1770 数数字(数学技巧)
    hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)
  • 原文地址:https://www.cnblogs.com/wudidd/p/10561289.html
Copyright © 2011-2022 走看看