对aop进行了小测试,动手才能看清真相!
首先,写个aop中的target对象,
package com.xll.aop;
public class Target {
//...
public void work(){
System.out.println("我属于Target类且在Target中工作!");
}
//...
}
现在我写个target2:
package com.xll.aop;
public class Target2 {
public void work(){
System.out.println("work in the Target2.....");
}
}
然后写上我需要织入的advise(不知道这么描述是否正确,advise理解成我需要的横切关注点):
package com.xll.aop;
public class Advise {
public void weaveBefore(){
System.out.println("----before----");
}
public void weaveAfter(){
System.out.println("----after----");
}
}
然后在spring的主配置文件applicationContext.xml中配置:
<?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"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="myTarget" class="com.xll.aop.Target"></bean>
<bean id="myTarget2" class="com.xll.aop.Target2"></bean>
<bean id="myAdvise" class="com.xll.aop.Advise"></bean>
<aop:config>
<aop:aspect id="myAspect1" ref="myAdvise" ><!--ref为要切入的功能模块Aspect -->
<aop:pointcut id="myPoint"
expression="execution(* com.xll.aop.Target.*(..))"/>
<aop:before
pointcut-ref="myPoint"
method="weaveBefore"/> <!-- method是切入的功能模块Aspect中的方法 -->
</aop:aspect>
<aop:aspect id="myAspect2" ref="myAdvise" >
<aop:pointcut id="myPoint2"
expression="execution(* com.xll.aop.Target2.work(..))"/>
<aop:after
pointcut-ref="myPoint2"
method="weaveAfter"/>
</aop:aspect>
</aop:config>
</beans>
配置好后,编写我的单元测试:
package com.xll.aop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import junit.framework.TestCase;
public class TestAop extends TestCase{
public void testAop(){
ApplicationContext ctx = new FileSystemXmlApplicationContext("src/applicationContext.xml");
Target target = (Target)ctx.getBean("myTarget");
target.work();
}
}
测试结果:
----before----
我属于Target类且在Target中工作!
好了,织入成功!
现在修改我的测试:
public void testAop(){
ApplicationContext ctx = new FileSystemXmlApplicationContext("src/applicationContext.xml");
Target2 target = (Target2)ctx.getBean("myTarget2");
target.work();
}
结果如下:
work in the Target2.....
----after----
对于AOP思想的理解,以后再补上,网上很多资源。
分享到:
相关推荐
- **注解**:Spring集成测试中使用的注解。 - **Spring TestContext框架**:Spring提供的测试框架。 - **Spring MVC测试框架**:针对Spring MVC的测试框架。 - **WebTestClient**:Spring WebFlux中的测试工具。...
### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...
Spring框架是Java开发中的核心组件,它为构建企业级应用提供了全面的解决方案。Spring以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等特性,极大地简化了Java应用的...
本教程精华集专注于Spring的基础知识,包括IoC(Inversion of Control,控制反转)、AOP(Aspect Oriented Programming,面向切面编程)以及JDBC模块。以下是这些核心概念的详细介绍: 1. **Spring IoC(控制反转)...
Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力而著名。这份"spring的一些经过筛选的精华...
Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,由Rod Johnson在其著作《Expert One-on-One J2EE Design and Development》中首次提出。它以其依赖注入(Dependency Injection,DI)和面向切面编程...
【Spring 框架概述】 ...通过使用Spring,开发者可以构建出更加模块化、易于测试和维护的Java应用程序。此外,Spring的轻量级特性使其能够在各种规模的项目中应用,无论是小型的桌面应用还是大型的企业级系统。
- **Mockito**:在Spring应用中,使用Mockito可以模拟依赖对象,进行隔离测试。 - **Spring Test**模块:提供了对Spring应用进行集成测试的支持,包括ApplicationContext的加载和测试环境的配置。 通过以上内容的...
3. **AOP(Aspect-Oriented Programming, 面向切面编程)**:Spring提供了AOP支持,用于处理系统的横切关注点,如日志、事务管理等。开发者可以定义切面,并在特定的连接点(如方法调用)上应用这些切面。 4. **Bean...
第二版涵盖了Spring 2.5版本的新特性和改进之处,同时也保持了第一版中的许多精华内容。 ### 书籍内容概览 #### 第一部分:Spring基础 1. **第1章:Spring入门** - 介绍了Spring框架的历史背景和发展历程。 - ...
6. **Struts2与Spring整合**:结合Spring进行依赖注入,提高组件的可测试性。 在面试中,可能会遇到的问题包括但不限于如何解决多线程下的Session问题、AOP的应用场景、Struts2的拦截器链、Hibernate的性能优化策略...
Spring框架是Java后端开发中的一个核心组件,它以其IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)两大特性著称,极大地简化了企业级应用的开发。本文将通过分析标题"用...
在“spring教学视频第三天”的课程中,我们深入学习了Spring框架的核心概念和技术,这是Java企业级应用开发的重要工具。Spring以其轻量级、模块化的设计理念,深受开发者喜爱。本教学视频的重点可能包括以下几个方面...
Spring框架是Java开发中的核心组件,它以IoC(Inversion of Control)和AOP(Aspect Oriented Programming)为核心理念,极大地简化了企业级应用的开发。这份"Spring源码解析Xmind思维导图"是对Spring框架源码深度...
《狂神说Spring笔记》是一份深度探讨Spring框架的精华资料集合,主要涵盖了Spring的核心概念、功能特性以及在实际开发中的应用。Spring是Java平台上的一款轻量级、全面的企业级应用开发框架,它以其IoC(Inversion ...
它提供了`@RunWith(SpringJUnit4ClassRunner.class)`注解,使得Spring应用可以很容易地在JUnit测试中运行。 8. **spring-jdbc-3.2.0.RELEASE.jar**:Spring的JDBC模块提供了数据库访问的抽象层,简化了数据库操作,...
SSH整合是Java Web开发中常见的三大框架Struts2、Spring和Hibernate的集成,这个精华版教程旨在帮助初学者快速理解和掌握SSH的配置与应用。以下是关于SSH整合的一些关键知识点: **1. 开发环境** SSH整合通常需要...
Spring框架是中国IT开发领域中广泛使用的Java应用框架,它以其依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)的核心特性,极大地简化了企业级应用的开发和维护...