自定义注解

一、自定义注解的声明

声明的语法:


@源注解
public @interface 自定义注解的名字{
//注解的各种方法
}

二、自定义注解的各种源注解

什么是源注解:标记注解的注解

@Documented - 表示该注解会被javadoc文档记录

@Target - 表示设置当前注解的标记位置


可选值:
ElementType.ANNOTATION_TYPE - 表示当前注解可以标记其他的注解
ElementType.CONSTRUCTOR - 表示当前注解可以标记构造方法
ElementType.FIELD - 表示当前注解可以标记属性(全局变量)
ElementType.LOCAL_VARIABLE - 表示当前注解可以标记局部变量
ElementType.METHOD - 表示当前注解可以标记方法
ElementType.PACKAGE - 表示当前注解可以标记包
ElementType.PARAMETER - 表示当前注解可以标记方法形式参数
ElementType.TYPE - 表示当前注解可以标记类、接口、枚举类

@Retention - 表示当前注解的有效范围


可选值:
RetentionPolicy.SOURCE - 表示当前注解只能存在于源码,一旦编译就会丢失
RetentionPolicy.CLASS - 表示当前注解只能存在于源码和字节码文件,一旦运行就会丢失
RetentionPolicy.RUNTIME - 表示当前注解能存在于源码、字节码文件以及运行时状态

注意:如果需要通过反射操作注解,则注解必须是RUNTIME类型的

三、自定义注解中的方法

方法的声明格式:


方法的返回值类型 方法名() [default 默认值]

注意: 
    1、注解中的方法没有形参列表和方法体
    2、标记注解时,必须制定所有方法的返回值
    3、如果某个方法设置了default默认值,则标记注解时可以忽略该方法返回值的设置,如果设置了就会覆盖默认值
    4、如果有个注解的方法名为value,而且在使用注解时只设置这一个方法,则可以忽略不写方法名
    5、方法的返回值可以是一个数组,如果只给一个值,则无需大括号,如果需要给多个值,就需要大括号

四、自定义注解到底有什么用?

简单来说,自定义注解可以标记给Java中的各种成员,起到给某个成员添加一些额外属性的目的。

五、AOP的实现

什么是aop? - 面向切面编程。

SpringBoot如何整合AOP

1、添加依赖


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2、编写切面类


/**
* 切面类
*
* 前置增强
* 后置增强
* 环绕增强
* 异常增强
* 后置完成增强
*
*/
@Aspect
@Component //切面类必须让spring扫描到
public class LoginAop {
/**
 * 环绕增强
 *
 * @Around(切点表达式)
 *
 * 切点表达式 - 表示当前确定增强哪些方法
 * @annotation(IsLogin) - 表示标记了@IsLogin注解的方法就会被这个环绕增强植入
 *
 * @return
 */
@Around("@annotation(IsLogin)")
public Object loginAop(ProceedingJoinPoint joinPoint){


    System.out.println("调用目标方法前做一些事情.....");
    Object result = null;
    try {
        //调用目标方法
        result = joinPoint.proceed();
    } catch (Throwable throwable) {
        throwable.printStackTrace();
    }
    System.out.println("调用目标方法后做一些事情.....");


    return result;
}
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我要做那最靓的仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值