理解JAVA注解Annotation

2019-02-24  本文已影响0人  __晨风__

JAVA注解在整个JAVA技术体系里起着非常重要的作用。平常我们在项目里会遇到非常多的注解,比如spring项目里诸如@Autowried,@Service等,非常之多。

注解是什么?为什么要使用注解?注解的分类有哪些?怎么写自定义注解?这是本文我要为大家分享的内容

注解是什么?

注解产生于JDK1.5,用来支持元数据,何为元数据,就是用来描述数据属性信息,及数据的数据。这里的解释还是比较抽象。有个概念即可。个人认为,它就是对功能的补充,完善。又区别于注释

为什么要使用注解?

注解在spring,mybatis框架当中无处不在,个人理解,首先,代码更加简洁,比如对于重复性的逻辑校验,只需要在其对应的作用域引入即可;其次,它在代码逻辑里充当功能组成的角色。所以,要能够看懂代码,必须了解注解。

注解的分类有哪些?

注解分为jdk本身自带注解和第三方注解,jdk常见自带注解有@Override,@Dperacated,@SupprisingWaring等这三种注解可以去自行学习其使用方法。第三方注解,比如spring,mybatis框架里大量注解等

怎么写自定义注解?

注解的大量存在,必然有它的精妙所在,所以学会写自定义注解是最重要的,因为它可以帮助我们解决很大一部分实际问题。比如,我们通常在整个项目里需要对所有的功能菜单进行权限的控制,这时候,我们只需要写一个自定义注解,再配合spring aop一起使用,这样会很大程度的减少代码的重复量

语法格式

跟接口长的很像,关键字@interface,里面包含了定义的元素(在接口里表示未实现的方法)。在这里不会去细说,资料一大堆,只说一些关键的地方:如果注解里只有一个元素,那么元素名通常为value(现在jdk的版本不做硬性要求);元素的返回类型,支持JAVA的基本数据类型。

最重要的元注解

元注解就是修饰注解的注解,这里我认为主要是对该注解的作用域加以限制。这里我们对元注解分别解释

@Target(ElementType.TYPE,ElementType.Method,....)分别表示该自定义注解所作用的类型,比如类,类方法,方法参数字段等

@Rentention(RententionPolicy.RUNTIME)表示该自定义注解在运行时环境生效。这里还有另外两种参数,SOURCE,CLASS。其中,source只是在源码时生效,在编译和运行时不起作用。class表示在编译时生效,同时也在源码时生效。总的来说,表示该自定义注解的生命周期

@Inherited表示该注解支持子类的继承

@Document表示该注解生成对应的注解文档

解析注解?

解析注解是为了能够获取注解中的执行结果,使我们对注解有一个更为清晰的认识。如何解析注解,这里通常采用JAVA反射来获取类,方法,或者字段当中的注解

项目实战

如何根据传入参数来获取动态SQL?

上一篇下一篇

猜你喜欢

热点阅读