自定义注解构造
最好写上两个java元注解:
@Target 表明该注解应用到的java元素类型 ElementType.METHOD
@Retention 表明该注解的生命周期 RetentionPolicy.RUNTIME 表示编译,运行时都存在
自定义注解的理解
注解本身可以理解为一个类,
其中的方法一般都是要有返回值的,返回的值可以理解为这个类的属性。这个方法就是这些属性的构造方法(接口方法)。方法后跟default=“defaultvalue”,表这个构造方法在不实例化的情况下默认的构造返回值。
返回值如果是数组,那么在使用注解时,就可以(这个方法=[元素1,元素2,元素…])
使用场景
可以单独使用反射,通过类名获取这个类上的注解。(反射,就是利用类名,获取到class对象,通过class对象获取这个类的属性,方法,构建实例对象,运行实例方法等等操作)然后针对这种有注解标记的做一些附加独立业务逻辑。
我使用一般是配合静态AOP使用,注解是定义的一个切入点,并在切入点传入相应的配置参数,对比上面的场景,这个更灵活,附加的不是独立业务逻辑,而是嵌入了新的共用逻辑。
更进一步就是结合拦截器使用,不过思路和结合AOP使用是一样的,自定义注解主要是标记,传参的作用。不过拦截器的配置,一般切入点(不是通过注解切入)是单独用表达式配置拦截的方法切入,通过方法获取注解,以及注解的参数。
AOP的理解
我们写的切面一般要有这两个注解
@Aspect
@Component
spring会扫描这个切面,变为一个bean,被标记为切面的bean。
spring会结合切入点,将这个bean的逻辑织入业务中。切入点可以通过表达式,也可以通过自定义注解来定义。
以上就是一些使用经验备忘吧。