`

Java注解(Annotation)简单介绍

阅读更多

1.Java注解(Annotation)简单介绍:

Java注解(Annotation)是通过在java源文件上添加标记字段,然后通过反射的反射在编译或者运行时获取这些标记字段以及其标记目标,然后进行相应处理的方法,曾经风靡一时的XDoclet就是最早的java注解的工作原理说明。使用注解可以进行某些配置,大大减少xml配置文件的书写麻烦,但是也有人认为注解方式不方便理解和维护,因此对于注解VS XML配置文件一直争论不断,个人感觉没有好坏之分,合适就是最好的。

(1).JDK内置注解:

JDK内置了3个注解:

a.      @Override:声明某个方法被重写。

b.      @Deprectated:声明某个方法过时,不推荐使用。

c.      @SuppressWarning({“unchecked”,…….}):告诉编译器对于那些警告信息忽略。

(2).自定义java注解:

Java注解就是一种特殊的接口,自定java注解非常方便,简单例子如下:

 

@Retention(RetentionPolicy.RUNTIME)  
  1. @Target(ElementType.CLASS)  
  2. public @interface TestAnnotation{  
  3. String value() default “”;  
  4. }  

 

 

(3).若要想自定义的注解可以被继承,则需要在自定义注解类上加上“@Inherited”注解。

注意和说明:

a. java的注解实际上是自动继承了java.lang.annotation.Annotation接口,因此在自定义注解时不能继承其他的注解或者接口。

b. Retention:告诉编译器如何处理注解,即注解运行在什么时刻。

RetentionPolicy是个枚举类型,有以下三种状态值:

1).SOURCE:该注解存储在源文件中,编译过后即废弃。

2).CLASS:该注解存储在class文件中,是其缺省的值。

3).RUNTIME:该注解存储在class文件中,并且有Java虚拟机读入解析,该类型非常重要,可以使用反射机制获取注解相关信息,可以进行程序分析处理。

c. @Target:指定注解的目标使用对象。

ElementType也是个枚举类型,有以下几种状态值:

1).TYPE:该注解适用于class,interface,enum等类级别的目标对象。

2).FIELD:该注解适用于类中字段级别的目标对象。

3).METHOD:该注解适用于类中方法级别的目标对象。

4).PARAMETER:该注解适用于方法参数级别的目标对象。

5).CONSTRUCTOR:该注解适用于类构造方法。

6).LOCAL_VARIABLE:该注解适用于局部变量。

7).ANNOTATION_TYPE:该注解适用于annotation对象。

8).PACKAGE:该注解适用于package对象。

d.注解里面只能声明属性,不能声明方法,声明属性的方式比较特殊:

语法格式为:数据类型 属性() default 默认值(默认值是可选的); 如:Stringvalue();

使用时,“注解对象(属性=属性值)”为注解指定属性值,通过“注解对象.属性;”就可以得到注解属性的值。

e.注解的解析:使用java反射机制获得注解的目标对象就可以得到注解对象,如:

通过反射得到了注解目标的Field对象field,则通过“field.getAnnotation(注解类.class);”就可以得到注解对象。

2.      基于注解的Spring配置准备条件:

Spring2.5以后,Spring开始全面支持注解方式配置,所以可以不用写xml配置文件,一样可以使用spring

(1).使用spring注解方式,必须加入spring注解方式所依赖的jar包:common-annotation.jar

(2).使用注解方式时,必须在spring配置文件的schema中添加注解的命名空间如下:

 

xmlns:context=”http://www.springframework.org/schema/context”  
  1. http://www.springframework.org/schema/context  
  2. http://www.springframework.org/schema/context/spring-context-2.5.xsd  

 

 

(3).spring配置文件中注册注解处理器:

spring配置文件中<.bean>元素之前添加:

 

<context:annotation-config>  

 

 

3.  基于注解的spring配置:

Spring2.5中使用四个注解按功能来进行对bean的配置:

(1).@Component泛指组件对于一般不好归类的java Bean使用。

(2).@Service用于标注配置业务层(service)组件。

(3).@Controller用于标注配置控制层的组件(Struts中的action)

(4).@Repository用于标注配置数据访问层组件即一般的DAOBean对象。

注意:对于使用spring注解方式配置的bean对象,bean引用时默认名称为被注解名称的首字母小写形式,也可以指定名称,如:@Service(“userDao“)

4.   Spring的自动装配:

自动装配的是指不用手动显式配置java Bean之间依赖关系,而是让spring依据某种规则自动将合适的对象注入到目标对象的过程。Spring中常用@Autowire@Resource来进行自动装配。

(1).@Autowire:默认是按照对象的数据类型进行自动装配的,如

 

@Autowire  
  1. private UserDao userDao;  

 

 

spring框架在运行时会自动将类型为UserDao的对象注入进来。

(2).@Resource默认是按照名称或者Id进行自动装配的只有当找不到匹配的名称或者Id时才按类型进行装配

 

@Resource(name=”userDao”)  
  1. private UsreDao userDao;  

 

 

spring框架在运行时会将配置名称或者id为“userDao”的对象注入进来。

注意:@Autowire@Resource都既可以写在字段上,也可以写在set方法上。

5.   Spring的自动扫描:

Spring自动扫描机制是指,我们使用基于注解的spring配置方式后,spring的配置文件中只需要注册注解处理器,不用显式地配置Bean,当spring在运行时会自动扫描根据给定的条件下类路径中的所有bean,根据注解将它们注入和装配起来并进行初始化的过程。

自动扫描很简单,只需要在spring的配置文件中添加如:

 

<context:component-scan base-package=“要自动扫描的包名“>  

 

 

Spring在运行时就可以对指定的包中所有添加了Spring注解的bean自动扫描,注入,装配和初始化。

注意:基于注解的spring配置,自动装配和自动扫描是紧密联系在一起协同工作的,都需要引入context的命名空间。

分享到:
评论

相关推荐

    Java注解Annotation验证

    Java注解Annotation用起来很方便,也越来越流行,由于其简单、简练且易于使用等特点,很多开发工具都提供了注解功能,不好的地方就是代码入侵比较严重,所以使用的时候要有一定的选择性。 这篇文章将利用注解,来做...

    java 注解annotation的使用以及反射如何获取注解

    Java注解(Annotation)是Java语言提供的一种元数据机制,用于向编译器或JVM提供额外的信息。这些信息可以用来验证代码、控制代码生成、配置应用等。注解是自Java 5版本引入的特性,它使得程序员可以在源代码中嵌入...

    Java 注解Annotation实例上手文档

    ### Java 注解Annotation实例上手文档 #### 一、引言与基础知识 Java注解(Annotation)自JDK 5.0引入以来,已经成为Java语言的重要特性之一,它为代码元数据提供了一种标准化的方式,使得编译器、工具和其他框架...

    java注解annotation.rar

    Java注解,也称为 Annotation,是Java编程语言中的一种元数据机制,用于向编译器、JVM(Java虚拟机)或工具提供有关代码的信息。这些信息可以用来进行编译时检查、运行时处理,或者作为配置信息。注解不是程序的一...

    Java自定义注解Annotation的使用

    ### Java自定义注解Annotation的使用 #### 1. 前言 自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,...

    Java 注解(Annotation)

    Java 注解(Annotation) - 请认准 ih0qtq

    Java Annotation注解技术

    Java Annotation注解技术是自Java SE 5.0版本引入的一种元编程机制,它允许程序员在源代码的各个层面(如类、方法、变量等)添加元数据,以供编译器、JVM或第三方工具在编译时或运行时进行处理。Annotation简化了...

    JAVA注解(Annotation).doc

    Java注解,也称为Annotation,是Java编程语言中的一种特性,用于向编译器、JVM或工具提供元数据。元数据是关于数据的数据,它提供了额外的信息,但不直接影响程序的执行。注解在代码中以`@注解名`的形式出现,主要...

    Java Annotation(Java 注解)

    如果你想知道java annotation是什么?你可以看看

    Java.Annotation注解.part4

    Java.Annotation注解.part4

    Java注解(Annotation)全面解析:作用、应用与自定义实践

    本文将详细介绍Java注解的作用、应用场景以及如何自定义注解。 Java注解是一种强大的工具,它们为代码提供了额外的元数据,可以在编译时和运行时发挥多种作用。通过自定义注解,开发者可以创建灵活的框架和库,提高...

    Java Annotation注解.doc

    在实际开发中,Java注解被广泛用于Spring框架的依赖注入、JPA的实体映射、JSF的UI组件绑定等场景,极大地提高了代码的可维护性和灵活性。然而,对于更复杂的注解使用,如自定义注解生成XML映射文件,需要更深入的...

    注解annotation的详细介绍

    注解(Annotation)是Java语言中的一个重要特性,自JDK5开始引入,它提供了一种安全的方式,使得程序员可以向源代码中添加元数据(metadata)。元数据是关于数据的数据,它并不改变程序运行方式,但可以被编译器、...

    Java 5 annotation 学习笔记

    Java 5引入的注解(Annotation)是一种元数据,它提供了在代码中嵌入信息的方式,这些信息可以被编译器、JVM或其他工具在编译时或运行时使用。注解可以用来简化代码,提高可维护性,并帮助工具进行静态分析。 1. ...

    Java.Annotation注解.part3

    Java.Annotation注解.part3

    Java.Annotation注解.part2

    Java.Annotation注解.part2

Global site tag (gtag.js) - Google Analytics