全面解析Java注解(学习笔记)
2017-04-17 10:34
302 查看
第一章 概述
概念
Java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法。
第二章 Java中的常见注解
2-1 JDK中的注解
@Override@Deprecated
@Suppvisewarnings(“deprecation”)
2-2 Java第三方注解
Spring
@Autowired@Service
@Repository
Mybatis
@InsertProvider@UpdateProvider
@Options
第三章 注解的分类
3-1 Java注解的分类
按照运行机制(生命周期)分类
源码注解:注解只在源码中存在,编译成.class文件就不存在了。编译时注解:注解在源码和.class文件中都存在。(JDK自带的注解)
运行时注解:在运行阶段还起作用,甚至会影响运行逻辑的注解。(@Autowired)
按照来源分
来自JDK的注解来自第三方的注解
我们自己定义的注解
元注解(注解的注解)
第四章 自定义注解
4-1 Java自定义注解
语法要求
@Target({ElementType.METHOD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface Description{ String desc(); String author(); int age() default 18; }
使用@interface关键字定义注解
成员以无参无异常方式声明
可以用default为成员指定一个默认值
成员类型是受限的,合法的类型包括原始类型及String,Class,Annotation,Enumeration
如果注解只有一个成员,则成员名必须取名为value(),在使用时可以忽略成员名和赋值号(=)
注解类可以没有成员,没有成员的注解称为标识注解
元注解
@Target({ElementType.METHOD,ElementType.TYPE})CONSTRUCTOR:构造方法声明
FIELD:字段声明
LOCAL_VARIABLE:局部变量声明
METHOD:方法声明
PACKAGE:包声明
PARAMETER:参数声明
TYPE:类,接口
@Retention(RetentionPolicy.RUNTIME)
SOURCE
CLASS
RUNTIME
@Inherited
允许子类继承。接口继承无效,类继承有效。并且只会集成类上的注解不会继承该类方法上的注解。
@Documented
生成javadoc会包含注解
4-2 使用自定义注解
使用注解的语法
@<注解名>(<成员名1>=<成员值1>,<成员名2>=<成员值2>,...)
@Description(desc="I am eyeColor", author="Mooc boy", age=18) public String eyeColor(){ return "red"; }
4-3 关于自定义注解的代码演示说明
同4-2。
4-4 解析注解
public static void main(String[] args) { //1.使用类加载器加载类 try { Class c = Class.forName("com.imooc.annotation.Child"); //2.找到类上面的注解 boolean isExist = c.isAnnotationPresent(Description.class); if(isExist){ //3.拿到注解实例 Description d = (Description)c.getAnnotation(Description.class); System.out.println(d.value()); } //4.找到方法上的注解 Method[] ms = c.getMethods(); for (Method m : ms) { boolean isMExist = m.isAnnotationPresent(Description.class); if(isMExist){ Description d = (Description)m.getAnnotation(Description.class); System.out.println(d.value()); } } //另一种解析方法 for (Method m : ms){ Annotation[] as = m.getAnnotations(); for (Annotation a : as){ if (a instanceof Description) { Description d = (Description)a; System.out.println(d.value()); } } } } catch (ClassNotFoundException e) { e.printStackTrace(); } }
第五章 项目实战
5-1 项目需求
项目说明
项目取自一个公司的持久层架构,用来代替Hibernate的解决方案,核心代码就是通过注解来实现的。
需求
有一张用户表,字段包括用户ID,用户名,昵称,年龄,性别,所在城市,邮箱,手机号。方便的对每个字段或字段的组合条件进行检索,并打印出SQL。
使用方式要足够简单,见代码示例。
5-2 项目实现(上)
代码请参考慕课网。
5-3 项目实现(下)
代码请参考慕课网。
第六章 课程总结
认识注解注解的作用范围@Target和生命周期@Retention
作用范围:包、类、字段、方法、方法的参数、局部变量
生命周期:源文件SOURCE、编译CLASS、运行RUNTIME
能读懂注解
能在实际项目中用注解解决问题,并能自定义注解
课程链接:http://www.imooc.com/learn/456
转摘自慕课网。
相关文章推荐
- [笔记]Java注解全面解析
- 全面解析Java注解--慕课网笔记
- Java 注解学习笔记
- java学习笔记——使用DOM解析XML和使用SAX解析XML
- Java 注解学习笔记
- 【转载】Unity学习笔记-关于Unity协同程序的全面解析
- 黑马程序员_java基础加强学习笔记之注解
- java学习笔记(annotation 注解_1)
- 《编写高质量代码改善Java程序的151个建议》学习笔记 第6章 枚举和注解
- 【转】Java 注解学习笔记
- Java 注解学习笔记
- JAVA与DOM解析器提高(DOM/SAX/JDOM/DOM4j/XPath) 学习笔记二
- Java 学习笔记05:Spring 基于注解(Annotation)的IOC
- 黑马程序员-java学习笔记-注解
- Java编程思想学习笔记——枚举、注解
- Java学习笔记(2)----Web项目中解析XML文件
- Java 学习笔记06:Spring 基于注解(Annotation)的AOP
- Java 学习笔记11:Spring MVC 中的基于注解的 Controller
- 黑马程序员_JAVA注解学习笔记
- 【黑马程序员】 学习笔记 - Java新技术 - 注解