SpringAOP使用
AspectJ 注解:
1、@Aspect、@Pointcut、Advice
@Aspect @Component public class SecurityAspect { @Autowired AuthService authservice; @Pointcut("@annotation(Adminonly)") public void adminonly() { } @Before("adminonly()") public void checkAccess() { authService.checkAccess(); } }
2、Pointcut expression:designators(指示符) 、wildcards(通配符)、operators(操作符)
designators :
匹配方法:execution()
匹配注解:@target()、@args()、@within()、@annotation()
匹配包/类型:within()
匹配对象:this()、bean()、target()
匹配参数:args()
wildcards(通配符):* 匹配任意数量的字符、+匹配指定类及其子类、..一般用于匹配任意数的子包或参数
operators(运算符):&&与操作符、||或操作符、!非操作符
5种Advice注解
1、@Before,前置通知
2、@After(finally),后置通知,方法执行完之后
3、@AfterReturning,返回通知,成功执行之后
4、@AfterThrowing,异常通知,抛出异常之后
5、@Aroud,环绕通知
匹配包/类型
@Pointcut(“within(com.imooc.service.ProductService)”) //匹配ProductService类里的所有方法 public void matchType(){} @Pointcut(“within(com.imooc..*)”) //匹配com.imooc包及子包下所有类的方法 public void matchPackage(){}
匹配对象
/**public class DemoDao implements IDao{}*/ 1、//匹配AOP对象的目标对象为指定类型的方法,即DemoDao的aop代理对象的方法 @Pointcut(“this(com.imooc.DemoDao)”) public void thisDemo(){} 2、//匹配实现IDao接口的目标对象(而不是aop代理后的对象)的方法,这里即DemoDao的方法 @Pointcut(“target(com.imooc.IDao)”) public void targetDemo(){} 3、//匹配所有以Service结尾的bean里的方法 @Pointcut(“bean(*Service)”) public void beanDemo(){}
匹配参数
//匹配任何以find开头而且只有一个Long参数的方法 @Pointcut(“execution(**..find*(Long))”) public void argsDemo1(){} //匹配任何只有一个Long参数的方法 @Pointcut(“args(Long)”) public void argsDemo2(){} //匹配任何以find开头而且第一个参数为Long型的方法 @Pointcut(“execution(**..find*(Long, ..))”) public void argsDemo3(){} //匹配第一个参数为Long型的方法 @Pointcut(“args(Long,..)”) public void argsDemo4(){}
匹配注解
//匹配方法标注有AdminOnly的注解的方法 @Pointcut(“@annotation(com.imooc.demo.security.AdminOnly)”) public void annoDemo(){} //匹配标注有Beta类底下的方法,要求的annotation的RetentionPolicy级别为CLASS @Pointcut(“@within(com.google.common.annotations.Beta)”) public void annoWithinDemo(){} //匹配方法标注有Respository的类底下的方法,要求的annotation的RetentionPolicy级别为RUNTIME @Pointcut(“@target(org.sprinframework.stereotype.Respository)”) public void annoTargetDemo(){} //匹配传入的参数类标注有Respository注解的方法 @Pointcut(“@args(org.sprinframework.stereotype.Respository)”) public void annoArgsDemo(){}
SpringAOP使用的更多相关文章
- Spring-AOP实践 - 统计访问时间
公司的项目有的页面超级慢,20s以上,不知道用户会不会疯掉,于是老大说这个页面要性能优化.于是,首先就要搞清楚究竟是哪一步耗时太多. 我采用spring aop来统计各个阶段的用时,其中计时器工具为S ...
- Spring-Aop入门
(一)Aop术语定义 1.通知(advice) 通知定义了切面要做什么工作,即调用的方法,同时定义了什么时候做这些工作,即以下五种类型 (1)前置通知(Before) :在目标方法调用之前执行切面方法 ...
- 转-springAOP基于XML配置文件方式
springAOP基于XML配置文件方式 时间 2014-03-28 20:11:12 CSDN博客 原文 http://blog.csdn.net/yantingmei/article/deta ...
- SpringAOP详解(转载大神的)
AOP(Aspect-Oriented Programming)这个东西,名字与 OOP 仅差一个字母,其实它是对 OOP 编程方式的一种补充,并非是取而代之.翻译过来就是"面向方面编程&q ...
- spring-aop学习
SpringAOP学习 author:luojie 1. AOP中的基本概念 AOP的通用术语,并非spring java所特有.很遗憾AOP的术语不是特别的直观.但如果让Spring java来 ...
- SpringAOP之静态代理
一.SpringAOP: ⒈AOP:Aspect Oriented Programming 面向切面编程, 实现的是核心业务和非核心业务之间的的分离,让核心类只做核心业务,代理类只做非核心业务. ⒉ ...
- springaop实现登陆验证
1.首先配置好springmvc和springaop 2.先写好登陆方法,通过注解写代理方法 通过代理获得登陆方法的参数方法名,然后再aop代理方法内进行登陆验证 贴出代码 package com.h ...
- spring-aop示例
具体案例放在github上,主要是jar包在上面 https://github.com/guoyansi/spring-aop-example knights.xml <?xml version ...
- 使用SpringAop 验证方法参数是否合法
(原文地址:http://blog.csdn.net/is_zhoufeng/article/details/7683194) 1.依赖包 aspectjweaver.jar 其中Maven的配 ...
- 关于SpringAOP的XML方式的配置
AOP(XML)[理解][应用][重点] 1.AOP基础实例 A.导入jar包 核心包(4个) 日志(2个) AOP(4个) Spring进行AOP开发(1个) ...
随机推荐
- 用PHP编写登陆界面
网页的编写用PHP最方便.用php做了最简单的用户登录.创建的程序. 一. MySQL的设计 MySQL设计了两个表:members和sex.两张表的创建语句分别是: create table mem ...
- laravel count的使用
rt 学习源头: https://blog.csdn.net/chajinglong/article/details/51954010 四.聚合 查询构建器还提供了各种聚合方法,如统计,马克斯,min ...
- 蓝桥杯 算法训练 ALGO-126 水仙花
算法训练 水仙花 时间限制:1.0s 内存限制:256.0MB 水仙花数 问题描述 判断给定的三位数是否 水仙花 数.所谓 水仙花 数是指其值等于它本身 每位数字立方和的数.例 153 就是一 ...
- Mycat-server-1.6.5 常见分片方式
Mycat-server-1.6.5 常见分片方式 1 安装 [root@hongquan1 soft]# tar zxvf Mycat-server-1.6.5-release-2018012222 ...
- c# 使用GetPrivateProfileString 读ini数据 失败
项目中用到 GetPrivateProfileString但是使用中, 发现 无法读出 ini 配置中的值, 比如Enable_log =3 我读到的是 API设置的默认值. 网上说可能时字符集编码的 ...
- Cookies和Session的定义与区别
Cookies和Session二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来.当下次你再光临同一个网 ...
- java 类中 static 的使用
在类中 static 主要修饰变量,方法及代码块.大致的执行和使用,据个人理解如下: 1.修饰变量: 在修饰变量时,如 ,表示该变量是静态变量,也可称为类变量.当当前变量是静态变量时,该变量被该类的所 ...
- Maven学习笔记2-maven命令
help:active-profiles列出当前构建中活动的Profile(项目的,用户的,全局的). help:effective-pom显示当前构建的实际POM,包含活动的Profile. hel ...
- go 语言介绍
特点1. 静态类型,编译开源语言 2. 脚本化的语法,支持多种编程范式(函数式,面向对象) 3. 原生,给力的并发支持并发编程 Go语言的优势: 1.脚本化的语法:开发效率高,容易上手 2.静态类型+ ...
- 关联映射、关联查询【重点掌握一条SQL语句的那种方法】
1 什么叫关联映射 通过数据库对象之间的关联关系(一对一.一对多.多对多),反映到实体对象上之间的引用. 举例 用户实体类(User):user_id user_name user_token 笔记本 ...