注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是基于注解的了,注解是一种趋势,现在已经有不少的人开始用注解了,注解是JDK1.5之后才有的新特性
JDK1.5之后内部提供的三个注解
@Deprecated 意思是“废弃的,过时的”
@Override 意思是“重写、覆盖”
@SuppressWarnings 意思是“压缩警告”
注解(Annotation)相当于一种标记,在程序中加入注解就等于为程序打上某种标记,没有加,则等于没有任何标记,以后,javac编译器、开发工具和其他程序可以通过反射来了解你的类及各种元素上有无何种标记,看你的程序有什么标记,就去干相应的事,标记可以加在包、类,属性、方法,方法的参数以及局部变量上。
如在javaEE提供的tutorial中的hello1中的Hello.java代码写到:
1 package javaeetutorial.hello1; 2 3 import javax.enterprise.context.RequestScoped; 4 import javax.inject.Named; 5 6 @Named 7 @RequestScoped 8 public class Hello { 9 10 private String name;11 12 public Hello() {13 }14 15 public String getName() {16 return name;17 }18 19 public void setName(String user_name) {20 this.name = user_name;21 }22 }
在Hello
类,称为管理bean类,提供了getter和setter方法name
中的Facelets页面表达式中使用属性。默认情况下,表达式语言引用类名,第一个字母为小写(hello.name
)。
如果使用bean类的默认名称,则可以指定@Model
为注释,而不必同时指定@Named
和 @RequestScoped
。该@Model
注释被称为刻板印象,对于封装等注解注释的术语。
在Hello.java
类中,注释javax.inject.Named
并 javax.enterprise.context.RequestScoped
使用请求范围将类标识为托管bean。范围定义应用程序数据如何保持和共享。
JavaServer Faces应用程序中最常用的范围如下:
-
Request(
@RequestScoped
):请求范围在Web应用程序中的单个HTTP请求期间保持不变。在类似的应用程序hello1
中,应用程序由单个请求和响应组成,bean使用请求范围。 -
Session(
@SessionScoped
):会话范围在Web应用程序中的多个HTTP请求中保持不变。当应用程序由需要维护数据的多个请求和响应组成时,bean使用会话范围。 -
Application(
@ApplicationScoped
):应用程序范围在所有用户与Web应用程序的交互中持续存在。