目录

  • 什么是aop
  • 模拟aop
  • 配置

什么是aop

  1. 什么是aop
作用 在程序运行期间,在不修改源码的情况下对方法进行功能增强
优势 减少重复代码 提高开发效率 并且便于开发

2.aop关键概念

模拟aop

  1. 目标接口
package com.lovely.proxy.aop;public interface TargetInterface {public abstract void save();
}
  1. 切点类
package com.lovely.proxy.aop;/*** @author echo lovely* @date 2020/7/28 16:07*/
public class Target implements TargetInterface {public void save() {try {System.out.println(1 / 0);} catch (Exception e) {System.out.println(e);}System.out.println("save running about aop...");}
}
  1. 切面类
package com.lovely.proxy.aop;import org.aspectj.lang.ProceedingJoinPoint;/*** 切面类 里面写增强方法 advice 通知方法* @author echo lovely* @date 2020/7/28 16:05*/
public class MyAspect {public void before() {System.out.println("前置增强...");}public void afterReturning() {System.out.println("后置增强...");}public Object around(ProceedingJoinPoint process) {System.out.println("环绕通知前...");Object obj = null;try {obj = process.proceed();} catch (Throwable throwable) {throwable.printStackTrace();}System.out.println("环绕通知后...");return obj;}public void afterThrowing() {System.out.println("异常拉...");}public void after() {System.out.println("最终通知...");}}

配置

   <!-- 目标对象 --><bean id="target" class="com.lovely.proxy.aop.Target"></bean><!-- 切面对象 --><bean id="myAspect" class="com.lovely.proxy.aop.MyAspect"></bean><!-- aop配置 --><!--  配置织入 被增强的方法(切点) 要进行那些增强(前置,后置)  --><aop:config><!-- 声明切面--><aop:aspect ref="myAspect"><!-- 切点表达式的抽取 --><aop:pointcut id="myPointcut" expression="execution(* com.lovely.proxy.aop.*.*(..))"/><!-- 切面:通知 + 切点 --><!--<aop:before method="before" pointcut="execution(public void com.lovely.proxy.aop.Target.save())"/>--><!-- 前后置通知 --><!--<aop:before method="before" pointcut="execution(void com.lovely.proxy.aop.*.*(..))"/><aop:after-returning method="afterReturning" pointcut="execution(void com.lovely.proxy.aop.*.*(..))"/>--><!-- 环绕增强 --><!--<aop:around method="around" pointcut="execution(* com.lovely.proxy.aop.*.*(..))"/>--><!-- 抛出异常通知 --><!--<aop:after-throwing method="afterThrowing" pointcut="execution(void com.lovely.proxy.aop.*.*(..))"/>--><!-- 最终通知 --><!--<aop:after method="after" pointcut="execution(void com.lovely.proxy.aop.*.*(..))"/>--><!-- 引用切点表达式 --><aop:around method="around" pointcut-ref="myPointcut"/></aop:aspect></aop:config>

spring 基于xml方式配置aop相关推荐

  1. spring学习总结(十):基于 XML 的配置AOP

    基于 XML 的配置声明AOP 除了使用 AspectJ 注解声明切面, Spring 也支持在 Bean 配置文件中声明切面. 这种声明是通过 aop schema 中的 XML 元素完成的. 正常 ...

  2. Spring通过xml文件配置AOP,before、after、around、AfterThrowing、AfterReturning、Declare-parents

    1 引包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  3. java spring bean配置文件_Spring基于xml文件配置Bean过程详解

    这篇文章主要介绍了spring基于xml文件配置Bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过全类名来配置: class:be ...

  4. 基于xml的方式配置AOP

    用基于 XML 的配置声明切面 除了使用 AspectJ 注解声明切面, Spring 也支持在 Bean 配置文件中声明切面. 这种声明是通过 aop schema 中的 XML 元素完成的. 正常 ...

  5. Spring Cache抽象-基于XML的配置声明(基于EhCache的配置)

    概述 完整示例 pomxml增加依赖 数据库表数据Oracle 实体类 服务层 ehcache的配置文件 Spring-EhCache配置文件 单元测试 日志输出 日志分析 示例源码 概述 首先请阅读 ...

  6. Spring学习(五)bean装配详解之 【XML方式配置】

    本文借鉴:Spring学习(特此感谢!) 一.配置Bean的方式及选择 配置方式 在 XML 文件中显式配置 在 Java 的接口和类中实现配置 隐式 Bean 的发现机制和自动装配原则 方式选择的原 ...

  7. 第五章 Spring进阶-注解方式实现AOP(1)

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 徒弟:师傅,我 ...

  8. (转)使用Spring的注解方式实现AOP入门

    http://blog.csdn.net/yerenyuan_pku/article/details/52865330 首先在Eclipse中新建一个普通的Java Project,名称为spring ...

  9. (spring-第4回【IoC基础篇】)spring基于注解的配置

    (spring-第4回[IoC基础篇])spring基于注解的配置 基于XML的bean属性配置:bean的定义信息与bean的实现类是分离的. 基于注解的配置:bean的定义信息是通过在bean实现 ...

最新文章

  1. https://github.com/fendouai/Awesome-Chatbot
  2. html试题及答案,HTML试题及答案
  3. 一、经含氟防水剂整理的织物主要存在的不足?
  4. etherpeek nx在网络维护中的应用
  5. LeetCode算法入门- 3Sum -day9
  6. Linux学习总结(54)——Red Hat Enterprise Linux与CentOS的区别
  7. 9个月宝宝还不会爬怎么办?
  8. jq使用教程03_JQData说明书概要
  9. umail邮件服务器如何保证数据安全性?
  10. [解决方案]WebAPI+SwaggerUI部署服务器后,访问一直报错的问题
  11. android中的surface
  12. python从入门到实践答案博客园_《Python从入门到实践》--第八章 函数 课后练习4...
  13. 班尼路信息化系统基础选型的简单分析
  14. 引用类型-Function类型
  15. Building package xxx:xxx-windows failed with: BUILD_FAILED
  16. 关于微信开放平台配置-网站应用
  17. 异地容灾系统方案设计与分析
  18. python批量下载txt图片批量导入到ppt
  19. kill与kill -9的区别
  20. 图像视频伪造检测,针对DeepFake技术检测效果不佳

热门文章

  1. 前端学习(1484):json-server工具使用
  2. 前端学习(1395):多人管理项目15建立请求
  3. 前端学习(712):数组的概念
  4. 前端学习(285):移动端简单知识
  5. 前端学习(80):按类型划分标签(inline)
  6. spring mvc学习(42):restful的编辑功能实现
  7. windows:(1)xmind常用快捷键
  8. stylus之注释(Comments)
  9. python 持续集成 教程_jenkins+python自动化测试持续集成教程
  10. docker删除镜像和删除容器