day05笔记

AOP知识

切入点表达式

1.bean表达式

说明:根据bean的ID拦截指定的对象

 @Pointcut("bean(userServiceImpl)")
    public void pointcut(){

    }

2.within表达式

说明: 按照类型匹配. 可以使用通配符*号

		1.  @Pointcut("within(com.jt.service.UserServiceImpl)")
			   只拦截UserServiceImpl的类
		2.  @Pointcut("within(com.jt.service.*)")
			   拦截com.jt.service下的一级的类.
		3.  @Pointcut("within(com.jt.service..*)")
				拦截com.jt.service下所有包下的所有类
		4.  @Pointcut("within(com.*.service..*)")
				拦截com.任意包.service下所有包下的所有类

说明:上述的2种操作方法 粒度较粗,一般情况下不用

3.execution表达式

作用: 粒度比较细,可以按照方法参数进行匹配

语法:  @Pointcut("execution(返回值类型 包名.类名.方法名(参数列表))")
1. 按照类型方法匹配
@Pointcut("execution(* com.jt.service.UserServiceImpl.addUser())")
2. 要求返回值任意, com.jt.service包下的所有的子孙类中的任意方法的任意参数要求拦截.
@Pointcut("execution(* com.jt.service..*.*(..))")

3. 要求返回值任意, com.jt.service包下的所有的子孙类中的add开头的方法并且参数1个是int类型 进行拦截
@Pointcut("execution(* com.jt.service..*.add*(int))")

4.@annotation表达式

作用: 可以根据用户的自定义注解进行拦截

4.1 完成自定义注解Wyd

package com.jt.anno;

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

@Retention(RetentionPolicy.RUNTIME) //注解运行期有效
@Target(ElementType.METHOD)         //注解标识方法
public @interface Wyd {
}

4.2 标记注解

@Service
public class UserServiceImpl implements UserService{
    @Override
    @Wyd    //注解主要起标记作用
    public void addUser() {
        System.out.println("新增用户");
        //int a = 1/0;
    }

4.3AOP拦截注解

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值