您的位置:首页 > 编程语言 > Java开发

一文读懂java注解

2019-04-10 21:06 99 查看

引言:注解目前非常的流行,很多主流框架都支持注解,而且自己编写代码的时候也会尽量的去用注解,使用方便,代码简洁。本文参考多篇优秀博客,主要介绍注解概念、内容、原理、分类以及自定义注解,覆盖注解的全部基础内容,力求一文读懂Java注解。

一、注解的概念及来源

注解是一种描述数据的数据,是源代码的元数据。通俗地讲,相当于对源代码打一个标签。举个例子,Java中一个经常见到的注解@Override。

[code]@Override
public String toString() {
return "This is String Representation of current object.";
}

在上述代码中,@Override这个注解就是一个标签,告诉编译器这个方法是一个重写方法。当父类中不存在这个方法,编译器就知道这和标签不同,会报错,提示该方法没有重写父类的方法。

Java注解是在Java1.5版本引入,功能类似于XML,都是用于描述元数据。不同的是XML和代码是松耦合的,有时候可以完全分离,主要用于为应用设置很多常量和参数;而注解是紧耦合, 可以用于把某个方法声明为服务。

二、注解的分类及具体内容

1.按照来源

注解分为三类:Java自带注解、第三方的注解、自定义的注解。

(1)Java自带注解

名称 作用 备注
@Override 表示覆盖或重写父类的方法。 当父类中不存在这个方法,编译器会报错,提示该方法没有重写父类的方法。
@Deprecated 表示该方法已经过时了。 使用了注解为它的元素编译器将发出警告,因为注解@Deprecated是不赞成使用的代码,被弃用的代码。
@Suppvisewarnings 表示关闭不当编译器警告信息。 比如@Suppvisewarnings("Deprecation")。

(2)第三方的注解

框架 注解名称 作用 备注
Spring @Autowired 默认按类型装配 如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用。
@Service 用于标注业务层组件 @Service("serviceName")注解相当于applicationContext.xml配置文件中配置的<bean id="serviceName">,表示给当前类命名一个别名,方便注入到其他需要用到的类中。
@Repository 用于标注数据访问组件,即DAO组件。 @Repository(value="userDao")注解是告诉Spring,让Spring创建一个名字叫“userDao”的UserDaoImpl实例。
Mybatis @InsertProvider 用来在实体类的Mapper类里注解保存方法的SQL语句 通过SQL工厂类及对应的方法生产SQL语句,这种方法的好处在于,我们可以根据不同的需求生产出不同的SQL,适用性更好。
@UpdateProvider 用来在实体类的Mapper类里注解修改方法的SQL语句 同类型的注解为@InsertProvider,@UpdateProvider,@DeleteProvider和@SelectProvider对应增删改查。
@Options 设置缓存时间,为对象生成自增的key https://www.geek-share.com/detail/2694534560.html 这个博客的使用实例写的很赞。

spring常用注解:https://www.geek-share.com/detail/2686984400.html

(3)自定义注解

在第三节用一个例子介绍自定义注解。

2.按照运行机制

注解分为三类:源码注解、编译时注解和运行时注解。

名称 特点 举例
源码注解 只在源码中存在,编译后不存在  
编译时注解 源码和编译后的class文件都存在 @Override,@Deprecated,@SuppressWarnings
运行时注解 能在程序运行时起作用,甚至会影响运行逻辑的注解 如spring的依赖注入

3.按照功能划分

还包括,元注解——注解的注解。

三、自定义注解

自定义注解的一个实现例子:https://www.geek-share.com/detail/2685816597.html

 

参考:http://www.importnew.com/10294.html

https://www.geek-share.com/detail/2668449863.html

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: