spring AOP实现——xml方法
上一文中 讲了Annotation如何配置AOP,地址如下:http://5148737.blog.51cto.com/5138737/1428048
使用同样的bean,用xml来实现一下:
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方法相关推荐
- Spring AOP根据JdbcTemplate方法名动态设置数据源
2019独角兽企业重金招聘Python工程师标准>>> 说明:现在的场景是,采用数据库(Mysql)复制(binlog)的方式在两台不同服务器部署并配置主从(Master-Slave ...
- spring AOP对父类方法加强分析
spring AOP可以对方法进行加强,就是在方法前执行一些想要的事情,执行方法后想执行一些信息,原理就是利用动态代理,具体不在阐述 今天要讨论的是一个springBean继承了父类,在父类里进行了方 ...
- 菜鸟学习Spring——60s配置XML方法实现简单AOP
一.概述. 上一篇博客讲述了用注解的形式实现AOP现在讲述另外一种AOP实现的方式利用XML来实现AOP. 二.代码演示. 准备工作参照上一篇博客<菜鸟学习Spring--60s使用annota ...
- 基于 Annotation 拦截的 Spring AOP 权限验证方法
余 清, 软件工程师, IBM 简介: 使用 Annotation 可以非常方便的根据用户的不同角色,分配访问 Java 方法的权限.在 Java Web 开发中,使用这种方法,可以提高系统的松耦合度 ...
- Spring AOP(三)--XML方式实现
本文介绍通过XML方式实现Spring AOP,在上一篇中已经介绍了通过注解+java配置的方式,这篇文章主要是看XML中怎么配置,直接上代码了: 一.创建一个连接点 1⃣️定义接口 注意⚠️:可以定 ...
- spring aop 拦截业务方法,实现权限控制
难点:aop类是普通的java类,session是无法注入的,那么在有状态的系统中如何获取用户相关信息呢,session是必经之路啊,获取session就变的很重要.思索很久没有办法,后来在网上看到了 ...
- Spring AOP方法分析
Spring AOP方法分析 此示例显示如何配置Spring AOP方法概要分析.我们可以在任何服务(或其他)类中使用Spring AOP和任何方法,而无需在任何服务类中编写任何一行分析代码.面向方面 ...
- Spring AOP技术(基于AspectJ)的XML开发
Spring AOP技术(基于AspectJ)的XML开发 @(Spring)[aop, spring, xml, Spring, annotation, aspectJ] Spring AOP技术基 ...
- spring aop不执行_使用Spring AOP重试方法执行
spring aop不执行 我的一位博客关注者发送了一封电子邮件,要求我显示" Spring AOP的RealWorld用法"示例. 他提到,在大多数示例中,都演示了Spring ...
最新文章
- java memcachedclient_Java memcached client怎样建立长连接
- 渗透测试之地基服务篇:服务攻防之中间件JBoss
- Master/Slave知识
- [openjudge] 2797最短前缀 Trie
- 模型师对初学者的经验之谈
- 12) 十分钟学会android--APP通信传递消息之简单数据传输
- 有符号二进制加法溢出判断以及溢出后该如何计算正确答案
- 京瓷1125打印机清零_京瓷1125驱动下载
- 信息流短视频时长多目标优化
- 服务器维修报告单,服务器维修报告.pdf
- 中英文切换_值得收藏|不重装软件实现ArcGIS中英文版本之间切换
- 翻译:Tree Energy Loss: Towards Sparsely Annotated Semantic Segmentation
- 从 Quora 的 187 个问题中学习机器学习和 NLP
- 495. 提莫攻击(不会)
- 开源自助建站系统源码完整源码+搭建教程 傻瓜式一键建站系统源码
- PPT到Word的文档转换(未果)
- 南农计算机考研真题,2021南京农业大学考研历年真题
- CRT (C run-time library)简介
- BFC、IFC、GFC 和 FFC
- to be continued
热门文章
- oracle11g备份出错,Oracle 11g备份导入12c错误
- Android nfc编译,【Android编译】各个模块编译方法
- android studio vfs,Android Studio:尝试呈现XML布局的InvalidVirtualFileAccessException
- 工况密度和标况密度怎么换算_什么是载流量?导线的载流量与电流密度怎么计算?图文详解!...
- g标签 怎么设置svg_SVG g元素
- oracle消耗内存的查询,在AIX中计算ORACLE消耗的私有内存总数
- hibernate native oracle,hibernate native 主键生成策略
- html中日期格式化函数,JavaScript日期时间格式化函数分享
- Ansible系列--Copy模块
- @SpringBootApplication揭秘