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个) ...
随机推荐
- java List 等份截取
/** * 描述: 等份截取 * @author eyesmooon * @param list * @param size * @return * @date:2018年11月8日 下午8:00:3 ...
- (转)Dynamic Web project转成Maven项目
本文转载自:http://my.oschina.net/twosnail/blog/369125 1.新建Dynamic Web Project 1.File -> New -> Othe ...
- websocket之三:Tomcat的WebSocket实现
Tomcat自7.0.5版本开始支持WebSocket,并且实现了Java WebSocket规范(JSR356 ),而在7.0.5版本之前(7.0.2版本之后)则采用自定义API,即WebSocke ...
- AngularJS:输入验证
ylbtech-AngularJS:输入验证 1.返回顶部 1. AngularJS 输入验证 AngularJS 表单和控件可以验证输入的数据. 输入验证 在前面的几个章节中,你已经学到关于 Ang ...
- Oracle 12c 搭建学习
Oracle 12c 搭建学习 Vm workstaton10 安装linux 6.4 安装oracle12c Oracle 12c只支持64位系统 1 环境检查 [root@rac1 ~]# gre ...
- SQL基础(3)
SQL FULL JOIN (1)SQL FULL JOIN关键字 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行. (2)语法 SELECT column_name(s) FROM t ...
- S2SH整合所需jar包及其详解
转自:https://blog.csdn.net/vvvac1314/article/details/44002205 struts2所必须的jar包五个:struts2-core-2.1.6.jar ...
- 用JS,做一个简单的计算器
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title&g ...
- 两种布局的ListVIew Adapter。例如微信对话界面
这个界面 实现的不是微信对话界面.实现的是,focus的状态下,变为放大的另一种布局 重点: 一.定义类型个数 private final int TYPE_COUNT = 2; privat ...
- with上下文管理基础
import queue import contextlib import time @contextlib.contextmanager def worker_state(xxx,val): xxx ...