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 ...
随机推荐
- linux学习之使用fdisk命令进行磁盘分区(八)
linux下使用fdisk命令进行磁盘分区 目录 分区类型 分区方法表示 文件系统 fdisk命令分区过程 分区类型 主分区:总共最多只能分四个 扩展分区:只能有一个,也算作主分区的一种,也就是说主分 ...
- LVN与其在Linux上的实现
参考资料: LVM详解-骏马金龙-博客园 How to reduce the size of an LVM partition formatted with xfs filesystem on Cen ...
- window10 还原精灵 破解版 冰点
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha=======
- 爬虫scrapy的使用
1.常用命令
- mongodb操作符
1."$gt" ."$gte". "$lt". "$lte"."null查询"."$all ...
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build
https://jingyan.baidu.com/album/f79b7cb34f40569144023ef9.html?picindex=1
- startup.bat闪退问题
startup.bat闪退问题 我自己遇到的 1.例如: 手动点击startup.bat 后 ,一闪而过 2例如:在cmd下 进到tomcat的bin目录 运行 startup.bat 解决问题,第一 ...
- CocosCreator项目结构
1,通过 Dashboard,我们可以创建一个 Hello World 项目作为开始,创建之后的项目有特定的文件夹结构.[参考来源:官方文档] 2,初次创建并打开一个 Cocos Creator 项目 ...
- exce中42093和日期之间的关系
在EXECEL中数字0 代表日期 1900-1-0 ,即这个日期为起始日期,算是第0天数字1 代表日期 1900-1-1 ,即第一天数字2 代表日期 1900-1-2 ,即第二天......数字415 ...
- 安装NVIDIA驱动时禁用自带nouveau驱动
安装英伟达驱动时,一般需要禁用自带nouveau驱动,按如下命令操作: sudo vim /etc/modprobe.d/blacklist-nouveau.conf 添加如下内容: blacklis ...