Annotation(注解)的概念、作用及常用注解

时间:2023-03-09 02:49:32
Annotation(注解)的概念、作用及常用注解

Annotation的概念

  能够添加到 Java 源代码的语法元数据。类、方法、变量、参数、包都可以被注解,可用来将信息元数据与程序元素进行关联。Annotation 中文常译为“注解”。

  • 从JDK5.0 开始,java增加了对元数据(MetaData)的支持,也就是Annotation(注解)。
  • Annotation其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。
  • Annotation可以像修饰符一样被使用,可用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明,这些信息被保存在Annotation的“name=value”对中。
  • Annotation能被用来为程序元素(类,方法,成员变量等)设置元数据。

Annotation的作用

  标记,用于告诉编译器一些信息

  编译时动态处理,如动态生成代码

  运行时动态处理,如得到注解信息

  这里的三个作用实际对应着@Retention三种值分别表示的 Annotation

常用Annotation及例子:

  • @named

  @Named和Spring的@Component功能相同。@Named可以有值,如果没有值生成的Bean名称默认和类名相同。

   例如: 

 [java] view plaincopy

  @Named public class Person 

  该bean的名称就是person。

[java] view plaincopy

  @Named("p") public class Person 

   如果指定名称,那么就是指定的名称p

  • @model

  Annotation解析package javaeetutorial.hello1;

import javax.enterprise.context.RequestScoped;
import javax.inject.Named; @Named
@RequestScoped
public class Hello { private String name; public Hello() {
} public String getName() {
return name;
} public void setName(String user_name) {
this.name = user_name;
}
}

   在上面的代码中,Hello类叫做管理bean类,它为facelets页面表达式所使用的name属性提供了getter和setter方法,默认该facelets页面表达式引用的是Hello类的名字,不过第一个字母是小写字母(例如:hello.name)。

如果你使用的是默认的bean类的类名,你注解可以用@Model来替代@Named和@RequestScoped。@Model注释称为原型,是一个包含其他注释的注释的术语。

JavaServer Faces应用程序中最常用的范围如下:

  Request(@RequestScoped):请求范围在Web应用程序中的单个HTTP请求期间保持不变。在类似的应用程序hello1中,应用程序由单个请求和响应组成,bean使用请求范围。

  Session(@SessionScoped):会话范围在Web应用程序中的多个HTTP请求中保持不变。当应用程序由需要维护数据的多个请求和响应组成时,bean使用会话范围。

  Application(@ApplicationScoped):应用程序范围在所有用户与Web应用程序的交互中持续存在。