0元基础java

0元基础java导读 png 注解基本概念 我们在开发当中经常看到一些注解 例如 override Deprected 等 这些注解再常见不过了 但是这些注解到底有什么作用呢 在 spring 框架中大量的使用注解 那么它的工作原理又是什么呢 接下来我们来分析一下把 概念 注解即元数据 就是源代码的元数据 注解在代码中添加信息提供了一种形式化的方法 可以在后续中更方便的 使用这些数据

大家好,我是讯享网,很高兴认识大家。



导读.png

注解基本概念

我们在开发当中经常看到一些注解,例如override,Deprected等,这些注解再常见不过了,但是这些注解到底有什么作用呢?在spring 框架中大量的使用注解,那么它的工作原理又是什么呢?接下来我们来分析一下把。

概念

  • 注解即元数据,就是源代码的元数据
  • 注解在代码中添加信息提供了一种形式化的方法,可以在后续中更方便的 使用这些数据
  • Annotation是一种应用于类、方法、参数、变量、构造器及包声明中的特殊修饰符。它是一种由JSR-175标准选择用来描述元数据的一种工具。

作用

  • 生成文档
  • 跟踪代码依赖性,实现替代配置文件功能,减少配置。如Spring中的一些注解
  • 在编译时进行格式检查,如@Override等

意义

  • 注解之前,XML被广泛的应用于描述元数据,XML的维护越来越糟糕
    在需要紧耦合的地方,比XML该容易维护,阅读更方便
  • 在需要比较多参数设置时,使用xml更方便,而在将某个方法声明为服务时这种紧耦合的情况下,比较适合注解
  • XML是松耦合的,注解是紧耦合的
  • 对于XML和注解的使用,要具体问题具体分析
  • Java的annotation没有行为,只能有数据,实际上就是一组键值对而已。通过解析(parse)Class文件就能把一个annotation需要的键值对都找出来

分类

按照运行机制来分类
1.源码注解

只在源码中出现,编译成class文件就不存在了

2.编译时注解

注解在源码和编译中都存在 例如:Override,Deprected,SuppressWarnings

3.运行时注解

运行阶段起作用,甚至会影响运行逻辑的注解 例如spring框架中的@Autowired

按照来源来分类
  1. 来自Jdk的注解
  2. 来自第三方的注解
  3. 我们自己定义的注解

JDK注解

  • Override: 保证编译时 要重写方法的正确性
  • Deprected: 提示该方法已经过时
  • SuppressWarnings: 关闭特定警告信息

Java元注解

java中元注解有四个: @Retention @Target @Document @Inherited;它负责注解其他注解

@Retention:注解的保留位置
  • @Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
  • @Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
  • @Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在0元基础java运行时可以通过反射获取到
@Target: 注解的作用目标
  • @Target(ElementType.TYPE) //接口、类、枚举、注解
  • @Target(ElementType.FIELD) //字段、枚举的常量
  • @Target(ElementType.METHOD) //方法
  • @Target(ElementType.PARAMETER) //方法参数
  • @Target(ElementType.CONSTRUCTOR) //构造函数
  • @Target(ElementType.LOCAL_VARIABLE)//局部变量
  • @Target(ElementType.ANNOTATION_TYPE)//注解
  • @Target(ElementType.PACKAGE) ///包
@Document:说明该注解将被包含在javadoc中
@Inherited:说明子类可以继承父类中的该注解

自定义注解

概念就说这么多了,看多了没实践会有点懵,注解到底有什么用啊?注解是怎么使用的啊?接下来我们带着这一系列的疑问来做一个简单的例子。来梳理一下我们疑问

需求

我们模仿一下Hibernate的注解。只通过注解来简单实现它的核心功能

我们在数据库有一张user表。用于存储用户信息,然后我们现在对这张表进行查询功能。使用注解的方式来打印出不同条件来查询表的SQL语句。

准备

我们先准备好数据库中的表对应的bean对象

 
讯享网 
第一步:定义自己的注解

我们使用元注解对这个自己的注解来定义

表名对于的注解@Table
讯享网
字段名对应的注解@Column
 
第二步:获取解析注解
  • 使用注解的过程,重要的是创建注解处理器
  • Java SE5 扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器
  • 注解处理器类库: java.lang.reflect.AnnotatedElement
  1. 获取对象的class
  2. 判断这个对象是否有表名的注解
  3. 获取表名注解的值
  4. 获取对象的所有属性
  5. 遍历所有属性判断是否有字段名的注解
  6. 获取各个字段名的注解的属性值
  7. 拼接sql语句
讯享网
第三步 运行测试

测试代码

 

运行结果

  • select * from user where age=20,sex='男'
  • select * from user where name='张三',sex='男'
小讯
上一篇 2024-12-27 23:04
下一篇 2024-12-23 17:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/86.html