一、注解

注解的含义:注解相当于一个标签。
注解是用来修饰类、方法、变量、参数、包;相当于注解是给类、方法、成员变量打了个标签。
注解分为三类:
1.java及框架自带的注解;如:@Overrride、@Controller
2.自定义注解(自己定义编写的注解)
例:
package com.foxlink.aop;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface DoneOperate {
String param() default “”;
}
3.元注解(注解的注解)如:@Target、@Retention
@Target 表示注解作用在方法上、还是在类上、变量上。
@Retention 表示作用在哪个时间段(类有生命周期、编译期、运行期)

二、反射

java反射机制在程序运行时,对于任意一个类。都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态的获取信息以及动态调用对象的方法 的功能称为java的反射机制。

反射机制很重要的一点就是”运行时”,其使得我们在程序运行时加载、探索以及使用编译期完全未知的.class文件。也就是指,java程序可以加载一个运行时才知道名称的.class文件,然后获取完整的构造,生成器对象的实体、或者时对其fileds(变量)设值、或者调用methods(方法)。

反射的应用场景:
1.动态的给某个方法增加功能。(利用反射增加功能,原代码无需改动)(spring的aop 动态代理 )。
2.获取类的运行时信息(属性、方法 等)