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应用程序的交互中持续存在。