先说一下相应的知识作铺垫
Spring的AOP术语:
         1)连接点(JointPoint):目标对象的每个方法
    2)切入点(PontCut):切入了服务代码的连接点
    3)通知(Advice):在切入点上面需要切入的服务代码
    4)切面(Aspect/Advisor):在指定的切入点切入指定的通知形成切面
1、导入所需的jar包
Spring的IOC和AOP包
2、创建dao类
package star.july.d_spring_aop;
import org.aspectj.lang.ProceedingJoinPoint;
public class MyAspect {
          /**
           * 常用的通知类:
           *   前置通知: 在目标对象的连接点之前调用
           *   后置通知:在目标对象的连接点之后调用
           *   环绕通知: 在目标对象的连接点之前与之后调用
           */
          
          //定义前置通知
          public void before(){
                   System.out.println("开启事务");
          }
          
          //定义后置通知
          public void after(){
                   System.out.println("结束事务");
          }
          
          //环绕通知
          public void round(ProceedingJoinPoint jp) throws Throwable{
                   System.out.println("环绕通知前面代码");
                   
                   //执行目标对象的核心方法
                   jp.proceed();//执行连接点方法
                   
                   System.out.println("环绕通知后面代码");
          }
          
          
}
3、创建切面类
package star.july.d_spring_aop;
public class MyAspect {
          /**
           * 常用的通知类:
           *   前置通知: 在目标对象的连接点之前调用
           *   后置通知:在目标对象的连接点之后调用
           *   环绕通知: 在目标对象的连接点之前与之后调用
           */
          
          //定义前置通知
          public void before(){
                   System.out.println("开启事务");
          }
}
4、配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">
          <!-- 1.创建目标对象 -->
          <bean id="userDao" class="star.july.d_spring_aop.UserDao"></bean>
          
          <!-- 2.创建切面类对象 -->
          <bean id="myaspect" class="star.july.d_spring_aop.MyAspect"></bean>
          
          <!-- 3.配置切面 -->
          <aop:config>
                   <!--
                                      切面
                                      ref:关联切面类对象
                    -->
                    <aop:aspect ref="myaspect">
                             <!--
                                      3.1切入点
                                      id:切入点的别名
                                      expression: 切入点表达式 :格式: execution(方法的返回值类型 方法名(包+类 ..:表示零个或一个以上)(方法中参数列表))
                              -->
           <aop:pointcut expression="execution(* star.july.d_spring_aop.UserDao.*(..))" id="myspt"/>
                    <!-- 3.2通知 -->
                    <!-- 前置通知
                                      method:切面类中的前置通知的方法名称
                                      point-ref:需要关联的切入点
                     -->
                     <aop:before method="before" pointcut-ref="myspt"/>
                     <aop:after method="after" pointcut-ref="myspt"/>
                     <aop:around method="round" pointcut-ref="myspt"/>
                     </aop:aspect>
</aop:config>      
       
</beans>
5、测试
package star.july.d_spring_aop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Demo {
    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("/applicationContext.xml");
        UserDao userDao = (UserDao)ac.getBean("userDao");
        userDao.save();
        userDao.update();
    }
}

Spring中的简单实现AOP小例子相关推荐

  1. 在Eclipse中写第一个hibernate小例子

    在hibernate自带的文档中,包含了一个很简单的小例子,不过这个小例子是基于ant的,而且说的不是很详细,不利于新手学习.在这里,我将在Eclipse中实现这个例子,并给出详细的实现步骤.     ...

  2. spring中基于XML的AOP配置步骤

    spring中基于XML的AOP配置步骤 IAccountService.java package com.itheima.service;/*** 账户的业务层接口*/ public interfa ...

  3. Spring中的IOC和AOP是什么意思?

    (1) Spring是什么? IOC(控制反转)和AOP(面向方面编程)作为Spring框架的两个核心,很好地实现了解耦合.所以,简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AO ...

  4. Spring中的5种Aop常见应用方式(扫描注解方式)

    转载于:https://zhuanlan.zhihu.com/p/103236714 提到Aop,不得不提的那就是动态代理:关于动态代理,可以参考前面写过的文章 加耀:浅谈动态代理​zhuanlan. ...

  5. 谈谈Spring中的IOC和AOP概念 - 倪升武的博客 - CSDN博客

    转载于https://blog.csdn.net/eson_15/article/details/51090040 IOC和AOP是Spring中的两个核心的概念,下面谈谈对这两个概念的理解. 1. ...

  6. 关于Spring中IOC容器和AOP协同工作的原理理解

    1.在详细介绍 IOC 容器的工作原理前,这里先介绍一下实现 IOC 所用到的一些辅助类,包括BeanDefinition.BeanReference.PropertyValues.PropertyV ...

  7. spring中的loc和aop

    一.IOC理解 首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.ite ...

  8. spring中的IOC和AOP

    IOC IOC(Inversion Of Controll,控制反转)是一种设计思想,将原本在程序中手动创建对象的控制权,交由给Spring框架来管理.IOC容器是Spring用来实现IOC的载体,I ...

  9. springIllegalArgumentException Can not set field to $Proxy 在spring中使用事物或AOP遇到的错误

    一.问题出现 今天在ssm整合多模块的时候,当service注入到controller时,出现了service无法注入问题. 应用transaction注解方法的典型场景:接口+实现,在实现整个类上加 ...

最新文章

  1. 《Spark大数据分析实战》——1.4节弹性分布式数据集
  2. 一切皆文件的编程思想
  3. mysql中Table is read only 的解决方法小结
  4. 滥用网络爬虫技术,多家公司被查!互金行业风控外包时代终结
  5. 最长回文子序列(算法导论15-2
  6. 1 分钟 Serverless 部署掌上游戏机,“一行命令”找回小时候的乐趣!
  7. 浏览器开发调试工具的秘密 - Secrets of the Browser Developer Tools
  8. CF1654F-Minimal String Xoration【倍增】
  9. leetcode 222. 完全二叉树的节点个数(dfs)
  10. 作了一件超人品的事情,看到的各位都有好运
  11. 韩山师范计算机科学与技术,韩山师范学院计算机科学与技术专业
  12. c语言变量名s_i使其随i变化,动态规划I(含细c语言代码).ppt
  13. 【李宏毅机器学习】03:误差Error
  14. 自己闲着没事整理的人工智能思维导图(2(鸢尾花))
  15. 使用mat工具分析对比dump文件
  16. 判断浏览器是否支持html5
  17. 关于计算机信息学奥赛视频,震惊!信息学奥赛好处竟然这么多
  18. 坑爹的工行Chrome网银插件
  19. 制作颜色选择器(全)
  20. 家里宽带628连不上_宽带连接错误628连接被远程计算机终止是什么意思 - 卡饭网...

热门文章

  1. 区块链BaaS云服务(7)微软Azure区块链服务
  2. 2022年美国大学生数学建模竞赛——Problem C:交易策略
  3. 如何编写一个测试HIDL接口的vts(gtest)的testcase
  4. android指纹fingerprint学习总结
  5. 信息安全之网络安全初体验(保密向)(一)
  6. solidity编码规范
  7. DVWA学习(三)Brute Force(暴力破解)
  8. OpenGL 坐标系统(Perspective)
  9. EPROCESS ETHREAD简介
  10. python按正则方式搜索文件