上一文中 讲了Annotation如何配置AOP,地址如下:http://5148737.blog.51cto.com/5138737/1428048

使用同样的bean,用xml来实现一下:

  1. Hello.java 接口

定义了三个方法:

package com.xj.bean.aop;public interface Hello {public void addHello();   //添加方法public void deleteHello();  //删除方法public void findHello();
}

2.HelloImpl.java实现类

实现了接口中的三个方法,简单的打印

package com.xj.bean.aop;
public class HelloImpl implements Hello{@Overridepublic void addHello() {System.out.println("add");}@Overridepublic void deleteHello() {System.out.println("delete");}@Overridepublic void findHello() {System.out.println("find");}}

3.HelloProxy.java(所谓的Aspect)

不再使用annotation,所以注解去掉,里面的两个校验方法,在执行之前打印日志,执行之后打印日志。

package com.xj.bean.aop;public class HelloProxy {//准备在每个方法执行之前打印日志private void beforeLog(){    System.out.println("check add");        }//准备在每个方法执行之后打印日志private void afterLog(){System.out.println("after check delete");}
}

4.ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns="http://www.springframework.org/schema/beans"  xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">   <!-- <aop:aspectj-autoproxy/> xml方法不需要开启aspectj的注解--> <bean id="hello" class="com.xj.bean.aop.HelloImpl"/>  <!--定义普通的bean--><bean id="helloProxy" class="com.xj.bean.aop.HelloProxy"/>  <!--定义Aspect的bean--><!--Aop的xml配置,均采用aop:开头,并且都方法aop:config中--><aop:config><!-- 定义aspect,ref引用所在的bean--><aop:aspect  ref="helloProxy">   <!--定义pointcut:即特殊功能的执行范围--><aop:pointcut id="addMethod" expression="execution(* com.xj.bean.aop.*.add*(..))"/><aop:pointcut id="deleteMethod" expression="execution(* com.xj.bean.aop.*.delete*(..))"/><!-- 定义advice,即执行时机,为after、before、throwing等--><aop:before method="beforeLog" pointcut-ref="addMethod"/><aop:after method="afterLog" pointcut-ref="deleteMethod"/></aop:aspect></aop:config></beans>

5.测试

ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");
Hello hello = (Hello)context.getBean("hello");
hello.addHello();
hello.deleteHello();

6.结果

可以看出来,结果和annotation相同。

before check add     //add方法之前打印日志
add
delete
after check delete    //delete方法之后打印日志

转载于:https://blog.51cto.com/5148737/1428071

spring AOP实现——xml方法相关推荐

  1. Spring AOP根据JdbcTemplate方法名动态设置数据源

    2019独角兽企业重金招聘Python工程师标准>>> 说明:现在的场景是,采用数据库(Mysql)复制(binlog)的方式在两台不同服务器部署并配置主从(Master-Slave ...

  2. spring AOP对父类方法加强分析

    spring AOP可以对方法进行加强,就是在方法前执行一些想要的事情,执行方法后想执行一些信息,原理就是利用动态代理,具体不在阐述 今天要讨论的是一个springBean继承了父类,在父类里进行了方 ...

  3. 菜鸟学习Spring——60s配置XML方法实现简单AOP

    一.概述. 上一篇博客讲述了用注解的形式实现AOP现在讲述另外一种AOP实现的方式利用XML来实现AOP. 二.代码演示. 准备工作参照上一篇博客<菜鸟学习Spring--60s使用annota ...

  4. 基于 Annotation 拦截的 Spring AOP 权限验证方法

    余 清, 软件工程师, IBM 简介: 使用 Annotation 可以非常方便的根据用户的不同角色,分配访问 Java 方法的权限.在 Java Web 开发中,使用这种方法,可以提高系统的松耦合度 ...

  5. Spring AOP(三)--XML方式实现

    本文介绍通过XML方式实现Spring AOP,在上一篇中已经介绍了通过注解+java配置的方式,这篇文章主要是看XML中怎么配置,直接上代码了: 一.创建一个连接点 1⃣️定义接口 注意⚠️:可以定 ...

  6. spring aop 拦截业务方法,实现权限控制

    难点:aop类是普通的java类,session是无法注入的,那么在有状态的系统中如何获取用户相关信息呢,session是必经之路啊,获取session就变的很重要.思索很久没有办法,后来在网上看到了 ...

  7. Spring AOP方法分析

    Spring AOP方法分析 此示例显示如何配置Spring AOP方法概要分析.我们可以在任何服务(或其他)类中使用Spring AOP和任何方法,而无需在任何服务类中编写任何一行分析代码.面向方面 ...

  8. Spring AOP技术(基于AspectJ)的XML开发

    Spring AOP技术(基于AspectJ)的XML开发 @(Spring)[aop, spring, xml, Spring, annotation, aspectJ] Spring AOP技术基 ...

  9. spring aop不执行_使用Spring AOP重试方法执行

    spring aop不执行 我的一位博客关注者发送了一封电子邮件,要求我显示" Spring AOP的RealWorld用法"示例. 他提到,在大多数示例中,都演示了Spring ...

最新文章

  1. java memcachedclient_Java memcached client怎样建立长连接
  2. 渗透测试之地基服务篇:服务攻防之中间件JBoss
  3. Master/Slave知识
  4. [openjudge] 2797最短前缀 Trie
  5. 模型师对初学者的经验之谈
  6. 12) 十分钟学会android--APP通信传递消息之简单数据传输
  7. 有符号二进制加法溢出判断以及溢出后该如何计算正确答案
  8. 京瓷1125打印机清零_京瓷1125驱动下载
  9. 信息流短视频时长多目标优化
  10. 服务器维修报告单,服务器维修报告.pdf
  11. 中英文切换_值得收藏|不重装软件实现ArcGIS中英文版本之间切换
  12. 翻译:Tree Energy Loss: Towards Sparsely Annotated Semantic Segmentation
  13. 从 Quora 的 187 个问题中学习机器学习和 NLP
  14. 495. 提莫攻击(不会)
  15. 开源自助建站系统源码完整源码+搭建教程 傻瓜式一键建站系统源码
  16. PPT到Word的文档转换(未果)
  17. 南农计算机考研真题,2021南京农业大学考研历年真题
  18. CRT (C run-time library)简介
  19. BFC、IFC、GFC 和 FFC
  20. to be continued

热门文章

  1. oracle11g备份出错,Oracle 11g备份导入12c错误
  2. Android nfc编译,【Android编译】各个模块编译方法
  3. android studio vfs,Android Studio:尝试呈现XML布局的InvalidVirtualFileAccessException
  4. 工况密度和标况密度怎么换算_什么是载流量?导线的载流量与电流密度怎么计算?图文详解!...
  5. g标签 怎么设置svg_SVG g元素
  6. oracle消耗内存的查询,在AIX中计算ORACLE消耗的私有内存总数
  7. hibernate native oracle,hibernate native 主键生成策略
  8. html中日期格式化函数,JavaScript日期时间格式化函数分享
  9. Ansible系列--Copy模块
  10. @SpringBootApplication揭秘