1.自定义注解:

//注解的修饰对象,ElementType.METHOD表示该注解可以修饰方法
//ElementType.TYPE表示该注解可以修饰接口、类(model字段)、枚举
@Target({ElementType.METHOD, ElementType.TYPE})
//Retention定义注解的生命周期,有三种:源码SOURCE,编译期CLASS,运行期RUNTIME
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
  String value() default "";
}

 

2.定义切面AOP类:
@Aspect注解修饰类,关键注解:@Pointcut、@Before、@After、@AfterReturning、@AfterThrowing。关键对象JoinPoint。

3.反射、泛型:
通过反射、泛型相关的方法接口,可以获取调用到目标的,方法、注解相关的信息操作等。
(注意:注解被RetentionPolicy.RUNTIME修饰,才可以通过反射机制来获取注解信息。

4.递归调用函数的使用(技巧可以简化逻辑层数进行算法设计)。

通过以上的技术点,可以完成,系统业务日志记录、后台下载公共方法、树结构数据的封装公共方法等等公共级别的处理操作