`
xiaoliang330
  • 浏览: 116023 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring 精华中aop的小测试

阅读更多
对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思想的理解,以后再补上,网上很多资源。
分享到:
评论

相关推荐

    Spring5.1中文参考指南.pdf

    - **注解**:Spring集成测试中使用的注解。 - **Spring TestContext框架**:Spring提供的测试框架。 - **Spring MVC测试框架**:针对Spring MVC的测试框架。 - **WebTestClient**:Spring WebFlux中的测试工具。...

    Spring学习笔记(精华全记录)

    ### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...

    Spring相关的外文文献和翻译,spring论文参考文献,Java

    Spring框架是Java开发中的核心组件,它为构建企业级应用提供了全面的解决方案。Spring以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等特性,极大地简化了Java应用的...

    spring 基础教程精华集

    本教程精华集专注于Spring的基础知识,包括IoC(Inversion of Control,控制反转)、AOP(Aspect Oriented Programming,面向切面编程)以及JDBC模块。以下是这些核心概念的详细介绍: 1. **Spring IoC(控制反转)...

    spring的一些经过筛选的精华资料

    Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力而著名。这份"spring的一些经过筛选的精华...

    达内-12 spring

    Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,由Rod Johnson在其著作《Expert One-on-One J2EE Design and Development》中首次提出。它以其依赖注入(Dependency Injection,DI)和面向切面编程...

    达内培训内部资料--spring总结精华版

    【Spring 框架概述】 ...通过使用Spring,开发者可以构建出更加模块化、易于测试和维护的Java应用程序。此外,Spring的轻量级特性使其能够在各种规模的项目中应用,无论是小型的桌面应用还是大型的企业级系统。

    spring3 and junit4

    - **Mockito**:在Spring应用中,使用Mockito可以模拟依赖对象,进行隔离测试。 - **Spring Test**模块:提供了对Spring应用进行集成测试的支持,包括ApplicationContext的加载和测试环境的配置。 通过以上内容的...

    Spring4资源包

    3. **AOP(Aspect-Oriented Programming, 面向切面编程)**:Spring提供了AOP支持,用于处理系统的横切关注点,如日志、事务管理等。开发者可以定义切面,并在特定的连接点(如方法调用)上应用这些切面。 4. **Bean...

    SpringInAction中文版ch

    第二版涵盖了Spring 2.5版本的新特性和改进之处,同时也保持了第一版中的许多精华内容。 ### 书籍内容概览 #### 第一部分:Spring基础 1. **第1章:Spring入门** - 介绍了Spring框架的历史背景和发展历程。 - ...

    spring+hibernate+struts企业面试题(精华)

    6. **Struts2与Spring整合**:结合Spring进行依赖注入,提高组件的可测试性。 在面试中,可能会遇到的问题包括但不限于如何解决多线程下的Session问题、AOP的应用场景、Struts2的拦截器链、Hibernate的性能优化策略...

    用300行代码手写Spring V1.0版本

    Spring框架是Java后端开发中的一个核心组件,它以其IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)两大特性著称,极大地简化了企业级应用的开发。本文将通过分析标题"用...

    spring教学视频第三天

    在“spring教学视频第三天”的课程中,我们深入学习了Spring框架的核心概念和技术,这是Java企业级应用开发的重要工具。Spring以其轻量级、模块化的设计理念,深受开发者喜爱。本教学视频的重点可能包括以下几个方面...

    Spring源码解析Xmind思维导图

    Spring框架是Java开发中的核心组件,它以IoC(Inversion of Control)和AOP(Aspect Oriented Programming)为核心理念,极大地简化了企业级应用的开发。这份"Spring源码解析Xmind思维导图"是对Spring框架源码深度...

    狂神说spring笔记.zip

    《狂神说Spring笔记》是一份深度探讨Spring框架的精华资料集合,主要涵盖了Spring的核心概念、功能特性以及在实际开发中的应用。Spring是Java平台上的一款轻量级、全面的企业级应用开发框架,它以其IoC(Inversion ...

    Spring Jar包

    它提供了`@RunWith(SpringJUnit4ClassRunner.class)`注解,使得Spring应用可以很容易地在JUnit测试中运行。 8. **spring-jdbc-3.2.0.RELEASE.jar**:Spring的JDBC模块提供了数据库访问的抽象层,简化了数据库操作,...

    SSH整合之精华版 Struts2+Spring+Hibernate

    SSH整合是Java Web开发中常见的三大框架Struts2、Spring和Hibernate的集成,这个精华版教程旨在帮助初学者快速理解和掌握SSH的配置与应用。以下是关于SSH整合的一些关键知识点: **1. 开发环境** SSH整合通常需要...

    spring总结

    Spring框架是中国IT开发领域中广泛使用的Java应用框架,它以其依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)的核心特性,极大地简化了企业级应用的开发和维护...

Global site tag (gtag.js) - Google Analytics