目录

  • 基础
  • 引用
  • AOP方法
  • 使用
    • xml配置
    • 注解配置

基础

什么是aop?
把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的
基础上,对我们的已有方法进行增强。

引用

``` org.aspectjaspectjweaver1.8.13 ```

AOP方法

import org.aspectj.lang.ProceedingJoinPoint;public class AopMethod {public void before() {System.out.println("前置通知");}public void afterReturning() {System.out.println("后置通知");}public void afterThrowing() {System.out.println("异常通知");}/*** 环绕通知需要环绕通知的前置通知执行完成后,让原有的方法执行,再执行环绕通知的后置通知*/public void around(ProceedingJoinPoint joinPoint) throws Throwable {System.out.println("环绕通知-前置");//执行原来的方法joinPoint.proceed();System.out.println("环绕通知-后置");}public void after() {System.out.println("最终通知");}
}

使用

xml配置

applicationContext-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><bean id="ceshi" class="com.alvin.service.Ceshi"/><bean id="aopmethod" class="com.alvin.aop.AopMethod"/><aop:config><aop:aspect ref="aopmethod"><aop:before method="before" pointcut="execution(* com.alvin.service.*.m*(..))"/><aop:after-returning method="afterReturning" pointcut="execution(* com.alvin.service.*.m*(..))"/><aop:around method="around" pointcut="execution(* com.alvin.service.*.m*(..))"/><aop:after method="after" pointcut="execution(* com.alvin.service.*.m*(..))"/></aop:aspect></aop:config>
</beans>

注解配置

  • 开启注解

springmvc.xml

<!--配置开启AOP的注解使用@EnableAspectJAutoProxy-->
<aop:aspectj-autoproxy/>
  • 配置AOP
@Component
@Aspect
public class AopMethod {@Before("execution(* com.alvin.service.Ceshi.method())")public void before() {System.out.println("前置通知");}}

或者配置config

``` @Configuration @ComponentScan("com.alvin") @Import(JdbcConfig.class) @EnableAspectJAutoProxy public class SpringConfig { } ```

转载于:https://www.cnblogs.com/birdofparadise/p/10012297.html

springAOP学习笔记相关推荐

  1. springAop学习笔记(二,springboot进本配置和使用)

    配置 1.引入aop jar包 2.在主类上面加@EnableAspectJAutoProxy 这里要说一句:市面上常用有两种aop实现方式第一种是springaop,第二种是AspectJ,但是原始 ...

  2. SpringAOP学习笔记(一)——目标对象和代理对象

    一.目标对象和代理对象 目标对象:在SpringAOP被增强的对象 代理对象:通过aop中对目标对象进行增强,加入代理逻辑的而产生的对象 public interface Service {void ...

  3. SpringMVC框架--学习笔记(上)

    1.SpringMVC入门程序: (1)导入jar包:spring核心jar包.spring-webmvc整合Jar包 (2)配置前端控制器:web.xml文件中 <?xml version=& ...

  4. mybatis框架--学习笔记(下)

    上篇:mybatis框架--学习笔记(上):https://blog.csdn.net/a745233700/article/details/81034021 8.高级映射: (1)一对一查询: ①使 ...

  5. [Spring+SpringMVC+Mybatis]框架学习笔记(四):Spring实现AOP

    上一章:[Spring+SpringMVC+Mybatis]框架学习笔记(三):Spring实现JDBC 下一章:[Spring+SpringMVC+Mybatis]框架学习笔记(五):SpringA ...

  6. Spring源码学习笔记:起源发展和核心模块主要职能

    1.博客内容均出自于咕泡学院架构师第三期 2.架构师系列内容:架构师学习笔记(持续更新) 1.Spring 的前世今生 早在 2007 年,一个基于 Java语言的开源框架正式发布,取了一个非常有活力 ...

  7. Spring源码学习笔记:Spring设计模式对比和Spring的OOB,BOP,AOP,IOC,DI/DL

    1.博客内容均出自于咕泡学院架构师第三期 2.架构师系列内容:架构师学习笔记(持续更新) 1.GOF 23总设计模式归纳 分类 设计模式 创建型 工厂方法模式(Factory Method).抽象工厂 ...

  8. Spring框架学习笔记,超详细!!(4)

    Java小白开始学习Spring框架,一方面,跟着视频学习,并记录下学习笔记,方便以后复习回顾.另一方面,发布学习笔记来约束自己,学习路程还很遥远,继续加油坚持!!!希望能帮助到大家! 另外还有我的牛 ...

  9. Spring 学习笔记----->AOP

    Spring 学习笔记----->AOP 代理模式 为什么学代理模式? 因为这就是Spring Aop的底层 代理模式的分类: 静态代理 动态代理 静态代理 生活用的例子: 房东 public ...

  10. Spring框架学习笔记(三)(AOP,事务管理)

    Spring框架学习笔记(三) 九.AOP 9.1 AOP的注解配置 (1) 新建计算器核心功能(模拟:不能在改动核心代码) (2) 建立一个普通的Java类写增强代码(面向切面编程),使用Sprin ...

最新文章

  1. 合成孔径雷达基于RDA算法的点目标仿真
  2. java执行命令无返回_java运行cmd命令并获取返回信息的问题!!怎么不行了?
  3. Go语言学习资料整理
  4. 408考研数据结构复习-时间复杂度与空间复杂度-附统考真题
  5. vs2008下如何部署arcengine开发的程序
  6. af_netlink_Linux Netlink通信机制详解(上)
  7. 移动端上拉加载下拉刷新插件-mescroll.js插件
  8. 苹果手机设置导入喜欢的音乐作为铃声
  9. 语法练习——动名词专项训练
  10. Java开发的医院门诊挂号系统
  11. CVPR2017-如何在无标签数据集上训练模型
  12. 使用appfox工具测试登录有图片验证码接口的问题
  13. java tcc事务 例子_分布式事务之TCC事务模型
  14. 群晖 NAS DS218j的优秀与缺憾
  15. Scala List操作笔记 --备忘(9.9总结)
  16. 云服务器CentOS永久更改主机名
  17. 怎么查看电脑是多少位的
  18. Pygame实战:利用Python实现智能五子棋,实现之后发现我玩不赢它。
  19. char **和char* []区别,char *和char []区别
  20. 【从零开始的Java开发】1-4-3 多态:概念、实现、向上转型、向下转型、instanceof、类型转换、抽象类、抽象方法

热门文章

  1. C1083: 无法打开包括文件: “stdafx.h”: No such file or directory
  2. mysql 存储过程 调度_mysql 存储过程和事件调度
  3. 同质化代币和非同质化代币 区别对比
  4. 计算机网络第三版周舸答案,计算机网络技术基础第3版周舸第一章节计算机网络基础知识课件教学.ppt...
  5. php如何删除zip文件内容,删除php中的zip文件夹
  6. mysql备份 php_详解MYSQL的备份还原(PHP实现)
  7. # 检测中英输入法_奇怪的知识点增加了 手机输入法还能做更多
  8. Centos7安装 mariadb 最新版
  9. window 下 go lang 环境变量一键批处理设置
  10. 日志框架简述、slf4j 日志框架概述,slf4j + log4j 1.X 日志组合