`
GLC
  • 浏览: 112487 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Spring AOP下

阅读更多

在AOP之前、我们的程序一般是从上往下的顺序执行的;
横切面的关注点:就是我们按顺序执行程序时、不知道插入新的程序进来;也就是说只有当程序运行时才能表现出来。当我们碰到这个横切关注点后、需要对此问题进行分析;分析以后对问题进行模块化、模块化一般都会形成一个类,这个类一般就叫做切面类;这个切面类中要做的一般就是对横切性问题给出具体的实现也就是关注点的实现方法、这个方法在AOP中叫做通知;通知可以分为三类:前置通知:就是目标方法执行之前
     后置通知:目标方法执行之后
     环绕通知:目标方法执行前后
程序中、我们要使用通知的话,一般要有条件;满足这个条件才能使用通知、而条件就叫做切入点。当这个切入点满足通知的条件后、程序运行时通知被应用在具体的那个目标方法点上。这个点叫做连接点、作用:它会封装目标方法上所属信息;信息包括参数、属性等等。
下面我们来看总的流程图吧:





基于以上流程、我们在spring中具体实现:
先定义一个横切面类,再写方法:横切性关注点实现方法即通知

public class MyAspect {
	/**
	 * 横切性关注点问题的实现 (通知)
	 */
	public void outputLog(JoinPoint point) {
		System.out.println("基于Spring AOP的日志处理。。。。");
	}
接着我们在配置一个spring文件、将新建的切面类配置进来;让其实例化
<!-- 
     	  Spring AOP的实现 是基于Spring IOC
      -->
     <bean id="myAspectBean" class="hn.spring.aop.MyAspect"/>
再写AOP配置:aspect的配置中不能创建实例,只能从已配置好的bean实例中获取
<aop:config>
  <!-- 定义应用通知的条件即切入点;expression为拦截条件、其表达式可自己去查看spring官方文档-- >
  <aop:pointcut expression=””execution(public * hn.spring..*DAO.get*(..)) id=”myAspectBean”/>
  <!-- 配置AOP的切面类  -->
     	  <aop:aspect id="aopAspect" ref="myAspectBean">
     	  	   <!-- 通知应用匹配的拦截条件 
     	  	   <aop:before method="outputLog" pointcut-ref="myPointcut"/>
     	  </aop:aspect>
</aop:config>

我现在来测试、先写个测试用例
public class TestAOP extends TestCase {
	
	private ApplicationContext context;
	
	public void setUp()throws Exception{
  //同样对配置文件进行解析
		context = new ClassPathXmlApplicationContext(
				new String[]{"applicationContext.xml","spring-aop.xml"});
	}



使用spring AOP后,从IOC容器中获取Bean实例,满足AOP中配置的Pointcut条件后;自动返回bean实例的代理对象
TestHibernateDAO hibernateDAO = (TestHibernateDAO)context.getBean("hibernateDAO");
//获取对象后、在执行要执行的方法;这个方法跟AOP中拦截的表达式相关


hibernateDAO.saveObject("");
这样便满足了通知的条件
接着、我们在MyAspect类中去拿到连接点的信息;连接点的信息是动态加载的。
public void outputLog(JoinPoint point) {
		System.out.println("methodName = " + point.getSignature().getName());
		System.out.println("target = " + point.getTarget());
		System.out.println("基于Spring AOP的日志处理。。。。");
	}


  • 大小: 39.8 KB
分享到:
评论

相关推荐

    spring aop jar 包

    Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。这个"spring aop jar 包"包含了实现这一功能所需的类和接口,...

    Spring AOP 16道面试题及答案.docx

    Spring AOP提供了在不修改源代码的情况下,动态插入这些横切关注点的能力,使得代码更加模块化和易于维护。Spring支持两种AOP的实现方式:Spring AspectJ注解风格和Spring XML配置风格。使用AspectJ注解风格是最常见...

    简单spring aop 例子

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...

    Spring AOP完整例子

    Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许开发者在不修改源代码的情况下,通过插入切面来增强或改变程序的行为。在本教程中,我们将深入探讨Spring AOP的不同使用方法,包括定义切点、通知类型...

    spring aop依赖jar包

    现在,我们回到主题——"springaop依赖的jar包"。在Spring 2.5.6版本中,使用Spring AOP通常需要以下核心jar包: - `spring-aop.jar`:这是Spring AOP的核心库,包含了AOP相关的类和接口。 - `spring-beans.jar`:...

    spring-aop.jar各个版本

    spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...

    Spring Aop四个依赖的Jar包

    在实际使用中,我们需要在项目的类路径下包含这些Jar包,并在Spring配置文件中启用AOP支持。例如,可以通过以下XML配置启用Spring AOP: ```xml &lt;aop:aspectj-autoproxy /&gt; ``` 然后,我们可以定义切面、切点和...

    死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf

    Spring AOP 是一种面向切面编程的技术,它允许我们在不修改源代码的情况下,对应用程序的特定部分(如方法调用)进行增强。在 Spring 中,AOP 的实现主要依赖于代理模式,有两种代理方式:JDK 动态代理和 CGLIB 动态...

    Spring AOP面向方面编程原理:AOP概念

    ### Spring AOP面向方面编程原理:AOP概念详解 #### 一、引言 随着软件系统的日益复杂,传统的面向对象编程(OOP)逐渐暴露出难以应对某些横切关注点(cross-cutting concerns)的问题。为了解决这一挑战,面向方面编程...

    Spring AOP实现机制

    Spring AOP(面向切面编程)是Spring框架的核心特性之一,它允许程序员在不修改源代码的情况下,通过“切面”来插入额外的业务逻辑,如日志、事务管理等。AOP的引入极大地提高了代码的可复用性和可维护性。 ### 1. ...

    spring aop 自定义注解保存操作日志到mysql数据库 源码

    3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑...

    基于注解实现SpringAop

    基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop

    spring aop 五个依赖jar

    Spring AOP基于动态代理实现,可以与Spring IoC容器无缝集成,使得我们可以在不修改原有代码的情况下添加切面。此版本是3.1.1,适用于描述中提到的Spring 3.1版本。 4. **cglib-nodep-2.1_3.jar**:CGLIB(Code ...

    spring AOP依赖三个jar包

    Spring AOP,即Spring的面向切面编程模块,是Spring框架的重要组成部分,它允许开发者在不修改源代码的情况下,对程序进行横切关注点的处理,如日志、事务管理等。实现这一功能,主要依赖于三个核心的jar包:aop...

    spring AOP 引入jar包,spring IOC 引入Jar包

    Spring AOP(面向切面编程)允许开发者在不修改源代码的情况下,通过“切面”来插入新的行为或增强已有功能,而 Spring IOC(控制反转)则负责管理对象的生命周期和依赖关系,极大地简化了应用的架构。 **Spring ...

    反射实现 AOP 动态代理模式(Spring AOP 的实现原理)

    AOP通过预定义的“切面”对横切关注点进行模块化,从而可以在不修改业务逻辑代码的情况下增加新功能。动态代理是实现AOP的一种常用技术,它允许在运行时创建代理对象,拦截对真实对象的调用,并在调用前后添加额外的...

    spring aop的demo

    在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...

    spring-aop实例

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种强大的方式来实现横切关注点,如日志、事务管理、安全性等,从而解耦应用程序的核心业务逻辑。在Spring AOP中,关注点被模块化为独立的“切面”...

    spring aop用到jar包.rar

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点,如日志、事务管理、性能监控等。在使用Spring AOP时,通常需要引入特定的jar包来支持其功能。...

    spring aop 学习笔记

    Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和抽象化的方法来处理系统中的交叉关注点,如日志、事务管理、安全性等。本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际...

Global site tag (gtag.js) - Google Analytics