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的对象
        }
    }
     


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

  • 相关阅读:
    Magicodes.IE之花式导出
    Magicodes.IE之导入导出筛选器
    Magicodes.IE 2.3重磅发布——.NET Core开源导入导出库
    快速配置Azure DevOps代理服务器
    如何做好一个开源项目之徽章(二)
    使用Seq搭建免费的日志服务
    SpringBoot + SpringCloud Hystrix 实现服务熔断
    dedecms从word复制粘贴公式
    CuteEditor从word复制粘贴公式
    TinyMCE从word复制粘贴公式
  • 原文地址:https://www.cnblogs.com/wudidd/p/10561289.html
Copyright © 2011-2022 走看看