`

spring aop

 
阅读更多
0、 切面:类
通知:类中的方法
切入点: 执行哪些方法时需要调用上面前面中的通知
1。applicationContext.xml中添加 aop的schema
2、导入 aop 需要的3个包,由于aop使用的是第三方aspectj,所以需要下载
3、在applicationContext.xml中打开基于annotation的aop开关
4、编写切面(实际上就是一个类),添加注解component(名字)、@aspect  表示是个切面
5、切面中写通知(before、after、around三种)
@Before("execution(* cn.xxx.spring.dao.*.add*(..))||" +
"execution(* cn.xxx.spring.dao.*.del*(..))||" +
"execution(* cn.xxx.spring.dao.*.update*(..))")
public void logStart(JoinPoint jp){
Logger.info("加入日志。。。。。。");
System.out.println(jp.getTarget()); //输出调用的dao
System.out.println(jp.getSignature().getName()); //输出调用dao方法名
}
方法执行之前会   加入日志.......
-------------------------------------------------------
@After("execution(* cn.xxx.spring.dao.*.add*(..))||" +
"execution(* cn.xxx.spring.dao.*.del*(..))||" +
"execution(* cn.xxx.spring.dao.*.update*(..))")
public void logEnd(){
Logger.info("记录日志结束。。。。。。");
}
方法执行之后    记录日志结束.....
------------------------------------------------------
@Around("execution(* cn.xxx.spring.dao.*.add*(..))||" +
"execution(* cn.xxx.spring.dao.*.del*(..))||" +
"execution(* cn.xxx.spring.dao.*.update*(..))")
public void logAround(ProceedingJoinPoint pjp) throws Throwable{

Logger.info("around 开始 ,记录日志");
pjp.proceed();
Logger.info("around 结束,记录日志结束");
}
方法执行的前后  开始和结束
---------------------------------------------------------------
6、测试: 就像是普通的测试方法 就行 ,调用的相应的方法之后会自动调用通知
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics