spring aop 之xml
1、类库

2.aop概念

一个切面可以有多个切点
3.在方法前后进行aop的测试代码
3.1aop.xml
<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"> <bean id="audience" class="com.lzp.aop.Audience" />
<bean class="com.lzp.aop.Guitar" id="guitar">
<constructor-arg name="name" value="吉他"></constructor-arg>
</bean>
<bean id="eddie" class="com.lzp.aop.Instrumentalist">
<property name="instrument" ref="guitar" />
</bean>
<bean id="testPerformer" class="com.lzp.aop.TestPerformer"></bean> <bean id="logger" class="com.lzp.aop.WriterLogger" /> <bean id="loan" class="com.lzp.aop.TestLoan" />
<bean id="person" class="com.lzp.aop.Person">
<constructor-arg name="name" value="小名"></constructor-arg>
</bean> <aop:config>
<!--参数执行时间点 -->
<aop:aspect ref="audience">
<aop:pointcut expression="execution(* com.lzp.aop.Performer.perform(..))"
id="performerPointCut" />
<aop:before pointcut-ref="performerPointCut" method="takeSeats" /> <aop:before pointcut-ref="performerPointCut" method="turnOffCellPhones" /> <aop:after-returning pointcut-ref="performerPointCut"
method="applaud" /> <aop:after-throwing pointcut-ref="performerPointCut"
method="demandRefund" /> </aop:aspect>
<!-- 捕获带参数的方法执行 -->
<aop:aspect ref="logger">
<aop:pointcut
expression="execution(* com.lzp.aop.Loan.transfer(com.lzp.aop.Person)) and args(person)"
id="performerPointCut2" />
<aop:before method="Log" pointcut-ref="performerPointCut2"
arg-names="person" />
</aop:aspect>
</aop:config>
<!--<end id="audience_aspect" /> --> </beans>
3.2 类和接口
//Instrument
public abstract class Instrument { public Instrument(String name) {
this.name = name;
} public String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public abstract void play();
}
//Performer
public interface Performer {
void perform() throws PerformanceException; } //Instrumentalist
public class Instrumentalist implements Performer {
public void perform() throws PerformanceException {
instrument.play();
} private Instrument instrument; public void setInstrument(Instrument instrument) {
this.instrument = instrument;
} //Guitar
public class Guitar extends Instrument {
public Guitar(String name) {
super(name);
} public void play() {
System.out.println(name + "Strum strum strum");
}
} public Instrument getInstrument() {
return instrument;
} }
3.3mainTest
ApplicationContext context = new ClassPathXmlApplicationContext(
"aop.xml"); /* Performer performer = (Performer) context.getBean("eddie"); performer.perform();*/
4.获取方法传参的aop测试
4.1xml同上
4.2类和接口代码
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public interface Loan {
void transfer(Person person);
}
public class TestLoan implements Loan {
@Override
public void transfer(Person person) {
}
}
public interface Logger {
void Log(Person Person);
Person getPerson();
}
public class WriterLogger implements Logger {
private Person person;
@Override
public void Log(Person person) {
// TODO Auto-generated method stub
System.out.println("拦截带参数测试:person 的name为"+person.getName());
this.person=person;
}
@Override
public Person getPerson() {
// TODO Auto-generated method stub
return this.person;
}
}
上面实例主要记录了获取person类型参数的然后进行记录日志。
mainTest
ApplicationContext context = new ClassPathXmlApplicationContext(
"aop.xml"); /* Performer performer = (Performer) context.getBean("eddie"); performer.perform();*/ Loan loan = (Loan) context.getBean("loan");
Person person = (Person) context.getBean("person");
loan.transfer(person);
spring aop 之xml的更多相关文章
- spring aop 使用xml方式的简单总结
spring aop的 xml的配置方式的简单实现: 1.编写自己的切面类:配置各个通知类型 /** * */ package com.lilin.maven.service.aop; import ...
- Spring AOP-xml配置
在spring AOP(一)中介绍了AOP的基本概念和几个术语,现在学习一下在XML中如何配置AOP. 在XML中AOP的配置元素有以下几种: AOP配置元素 描述 <aop:config> ...
- Spring AOP 在XML中声明切面
转载地址:http://www.jianshu.com/p/43a0bc21805f 在XML中将一个Java类配置成一个切面: AOP元素 用途 <aop:advisor> 定义AOP通 ...
- Spring AOP之xml 配置实现
首先这个配置模式估计现在已经不用了,因为我在我们公司的项目里面并没有看到这么配置AOP相关的东西.不过,这个就和学习spring的控制反转(IOC)和依赖注入(DI)一样,刚刚开始的时候,都是从简单的 ...
- Spring AOP(三)--XML方式实现
本文介绍通过XML方式实现Spring AOP,在上一篇中已经介绍了通过注解+java配置的方式,这篇文章主要是看XML中怎么配置,直接上代码了: 一.创建一个连接点 1⃣️定义接口 注意⚠️:可以定 ...
- Spring AOP基于xml配置实例
SpringAOP里的几个术语,什么切面,切点之类的,官方的说明太抽象.为了更好地理解记忆,这里几下我自己的通俗的理解. 切面:就是日记类,什么前置通知后置通知(这些都是所谓的Advice)的具体方法 ...
- spring-第十八篇之spring AOP基于XML配置文件的管理方式
1.在XML配置文件中配置切面.切入点.增强处理.spring-1.5之前只能使用XML Schema方式配置切面.切入点.增强处理. spring配置文件中,所有的切面.切入点.增强处理都必须定义在 ...
- Spring系列(四):Spring AOP详解和实现方式(xml配置和注解配置)
参考文章:http://www.cnblogs.com/hongwz/p/5764917.html 一.什么是AOP AOP(Aspect Oriented Programming),即面向切面编程, ...
- Spring初学之xml实现AOP前置通知、后置通知、返回通知、异常通知等
实现两个整数的加减乘除,在每个方法执行前后打印日志. ArithmeticCalculator.java: package spring.aop.impl.xml; public interface ...
随机推荐
- windows下redis安装和配置
windows下redis安装和配置 redis介绍 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序. Redis有三个主要特点,使它优越于其它键值数 ...
- Python开发之序列化与反序列化:pickle、json模块使用详解
1 引言 在日常开发中,所有的对象都是存储在内存当中,尤其是像python这样的坚持一切接对象的高级程序设计语言,一旦关机,在写在内存中的数据都将不复存在.另一方面,存储在内存够中的对象由于编程语言. ...
- css 背景透明色, 文字不透明。
[原]CSS实现背景透明,文字不透明,兼容所有浏览器 background-color: rgba(0,0,0,0.5); filter:Alpha(opacity=50);
- BZOJ.4903.[CTSC2017]吉夫特(Lucas DP)
题目链接 首先\(C(n,m)\)为奇数当且仅当\(n\&m=m\). 简要证明: 因为是\(mod\ 2\),考虑Lucas定理. 在\(mod\ 2\)的情况下\(C(n,m)\)最后只会 ...
- 2002 ACM 杭电 计算球体积
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2002 注意,要用double 才能过,float过不了. 体积公式要加括号(优先级别)(4 * Π * r ...
- 利用gsoap工具,通过wsdl文件生成webservice的C++工程文件
一.下载gsoap文件,下载地址:https://zh.osdn.net/projects/sfnet_gsoap2/releases/ 二.以gsoap-2.8为例,解压到D盘,在D:/gsoap- ...
- Object类--equals方法
equals方法 1.比较的是对象引用的是否指向同一块内存地址 public static void main(String[] args) { HuaWei huawei=new HuaWei(); ...
- perl debug
1. 进入debug模式 # perl -d ./perl_debugger.pl it prompts, DB<1> 2. 查看从第10行开始的代码. 查看函数get_pattern ...
- WinForm EF+MySql企业管理软件C/S项目实战演练
一.课程介绍 我们都知道在软件架构方式分为:C/S和B/S两类.这里阿笨不谈论两种软件架构的优劣之分,因为它们各有千秋,用于不同场合.一位伟大的讲师曾经说过一句话:事物存在即合理!录制这堂课程的目的就 ...
- asp.net mvc流程图4.6以前