一文读懂java注解

本文全面解析Java注解,包括概念、分类、原理及其在代码中的应用。从Java自带注解、第三方注解到自定义注解,从源码注解、编译时注解到运行时注解,一文掌握Java注解的全部基础内容。

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

一、注解的概念及来源

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

@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设置缓存时间,为对象生成自增的keyhttps://www.cnblogs.com/sonofelice/p/6250203.html 这个博客的使用实例写的很赞。

spring常用注解:https://www.cnblogs.com/xiaoxi/p/5935009.html

(3)自定义注解

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

2.按照运行机制

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

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

3.按照功能划分

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

三、自定义注解

自定义注解的一个实现例子:https://blog.youkuaiyun.com/qq_27093465/article/details/52665189

 

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

https://www.cnblogs.com/Qian123/p/5256084.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值