一文读懂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
相关文章推荐
- 一文读懂Java 11的ZGC为何如此高效
- 一文读懂抽象类(Java)
- 一文读懂 JAVA 异常处理
- 【Java基本功】一文读懂final关键字的用法
- 一文读懂 JAVA 异常处理
- 【Java基本功】一文读懂String及其包装类的实现原理
- Java注解的原理(通俗易懂)
- [转帖收集] Java注解
- 深入理解Java:注解(Annotation)自定义注解入门
- Java高级特性——注解,这也许是最简单易懂的文章了 推荐
- 独家 | 一文读懂人工神经网络学习原理
- java反射--注解的定义与运用以及权限拦截
- Java注解
- java 自定义注解
- java自定义注解学习
- java之注解
- Java注解学习
- Java基础加强总结——注解(Annotation)
- Java导出excel基于注解
- java 注解