`
MySSH
  • 浏览: 65137 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

Spring2.0中的AOP使用(配置applicationContext.xml核心文件中)

阅读更多
1、Spring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代理。(创建推荐尽量使用JDK动态代理)如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理。所有目标类型实现的接口都被代理。若改目标对象没有实现任何接口,则创建一个CGLIB代理。
2、Spring2.0中的Pointcut定义?
Pointcut是JoinPoint的集合,它是程序中需要注入Advice的位置的集合,在Spring2.0中,Pointcut的定义包括两个部分:Pointcut表达式(expression)和Pointcut签名(signature)。
3、基于XML Schema的前置通知
  1、Java代码如下:

package com.zuxia.advice;

import org.aspectj.lang.JoinPoint;

public class FrontLogAdvice {
	//JoinPoint(连接点)连接点是应用程序执行过程中插入Aspect的地点,这个地点可以方法调用,
	//异常抛出等时刻
	public void printLog(JoinPoint joinPoint) {
		System.out.print("*************");
		System.out.print(joinPoint.getTarget().toString());
		System.out.print(" ");
		System.out.print(joinPoint.getSignature().getName());
		System.out.print("(");
		Object[] args =joinPoint.getArgs();
		for (int i = 0; i < args.length; i++) {
			System.out.print(args[i]);
			 if(i<args.length - 1){
				 System.out.print(",");
			 }
		}
		System.out.print(")");
		System.out.println(" *************");
	}
}

2、其次在applicationContext.xml核心文件配置如下:
  <!-- 配置方法前置通知的第二中方式,推荐采用这种方式,因为它不会和事务配置冲突(开始) -->
  
 <bean id="frontLogAdvice" class="com.zuxia.advice.FrontLogAdvice"></bean>
    <aop:config>
      <!-- 配置一个切面 -->
      <aop:aspect id="frontLog" ref="frontLogAdvice">
      <!-- 配置切点,指定将通知注入到哪些类的哪些方法上 -->
      <aop:pointcut id="serviceMethod" expression="execution(* com.zuxia.service.*.*(..))"/>
      <!-- 配置一个前置通知-->
         <aop:before method="printLog" pointcut-ref="serviceMethod"/>
  </aop:aspect>
    </aop:config>

4、基于XML Schema的后置通知:
  1、Java代码如下:
package com.zuxia.advice;

import org.aspectj.lang.JoinPoint;

public class AfterLogAdvice {
	//JoinPoint(连接点)连接点是应用程序执行过程中插入Aspect的地点,这个地点可以方法调用,
	//异常抛出等时刻
	public void printAfterLog(JoinPoint joinPoint) {
		System.out.print("*************");
		System.out.print(joinPoint.getTarget().toString());
		System.out.print(" ");
		System.out.print(joinPoint.getSignature().getName());
		System.out.print("(");
		Object[] args =joinPoint.getArgs();
		for (int i = 0; i < args.length; i++) {
			System.out.print(args[i]);
			 if(i<args.length - 1){
				 System.out.print(",");
			 }
		}
		System.out.print(")");
		System.out.println(" *************");
	}
}

  2、其次在applicationContext.xml核心文件配置如下:
  <!-- 配置方法后置通知的第二中方式,推荐采用这种方式,因为它不会和事务配置冲突(开始) -->
   
<bean id="afterLogAdvice" class="com.zuxia.advice.AfterLogAdvice"></bean>
    <aop:config>
      <!-- 配置一个切面 -->
      <aop:aspect id="afterLog" ref="AfterLogAdvice">
      <!-- 配置切点,指定将通知注入到哪些类的哪些方法上 -->
      <aop:pointcut id="serviceMethod" expression="execution(* com.zuxia.service.*.*(..))"/>
      <!-- 配置一个后置通知-->
         <aop:after method="printAfterLog" pointcut-ref="serviceMethod"/>
  </aop:aspect>
    </aop:config>

5、基于XML Schema的环绕通知
  1、Java代码如下:
package com.zuxia.advice;

import org.aspectj.lang.ProceedingJoinPoint;

public class ProceedAdvice {
	public void printProceedLog(ProceedingJoinPoint joinpoint){
		System.out.print("***************** ");
		System.out.print(joinpoint.getTarget().toString());
		System.out.print(" ");
		System.out.print(joinpoint.getSignature().getName());
		System.out.print("(");
		Object[] args = joinpoint.getArgs();
		for (int i = 0; i < args.length; i++) {
			System.out.print(args[i]);
			if (i < args.length - 1) {
				System.out.print(", ");
			}
		}
		System.out.print(")");
		System.out.println(" ***************** begin");
		
		try {
			joinpoint.proceed();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		
		System.out.print("***************** ");
		System.out.print(joinpoint.getTarget().toString());
		System.out.print(" ");
		System.out.print(joinpoint.getSignature().getName());
		System.out.print("(");
		for (int i = 0; i < args.length; i++) {
			System.out.print(args[i]);
			if (i < args.length - 1) {
				System.out.print(", ");
			}
		}
		System.out.print(")");
		System.out.println(" ***************** end");
	}
}

2、applicationContext.xml核心文件配置如下:
<!-- 配置方法环绕型通知的第二中方式,推荐采用这种方式,因为它不会和事务配置冲突(开始) -->
   
<bean id="proceedAdvice" class="com.zuxia.advice.ProceedAdvice"></bean>
    <aop:config>
      <!-- 配置一个切面 -->
      <aop:aspect id="proceedlog" ref="proceedAdvice">
      <!-- 配置切点,指定将通知注入到哪些类的哪些方法上 -->
      <aop:pointcut id="serviceMethod" expression="execution(* com.zuxia.service.*.*(..))"/>
      <!-- 配置一个环绕型通知-->
         <aop:after method="printProceedLog" pointcut-ref="serviceMethod"/>
  </aop:aspect>
    </aop:config>

6、基于XML Schema的异常通知
  1、Java代码如下:
package com.zuxia.advice;

import org.aspectj.lang.JoinPoint;


public class ExceptionAdvice {
	public void printExceptionLog(JoinPoint joinpoint){//不推荐使用Throwable对象,没必要打印堆栈
		System.out.print("***************** ");
		System.out.print(joinpoint.getTarget().toString());
		System.out.print(" ");
		System.out.print(joinpoint.getSignature().getName());
		System.out.print("(");
		Object[] args = joinpoint.getArgs();
		for (int i = 0; i < args.length; i++) {
			System.out.print(args[i]);
			if (i < args.length - 1) {
				System.out.print(", ");
			}
		}
		System.out.print(")");
		System.out.println(" *****************");
		//打印异常堆栈信息
        //System.out.println(throwable.getStackTrace());
	}
}
 
2、applicationContext.xml核心文件配置如下:
  <!-- 配置方法异常通知的第二中方式,推荐采用这种方式,因为它不会和事务配置冲突(开始) -->
   
<bean id="exceptionAdvice" class="com.zuxia.advice.ExceptionAdvice"></bean>
    <aop:config>
      <!-- 配置一个切面 -->
      <aop:aspect id="exceptionlog" ref="exceptionAdvice">
      <!-- 配置切点,指定将通知注入到哪些类的哪些方法上 -->
      <aop:pointcut id="serviceMethod" expression="execution(* com.zuxia.service.*.*(..))"/>
      <!-- 配置一个异常通知-->
         <aop:after method="printExceptionLog" pointcut-ref="serviceMethod"/>
  </aop:aspect>
    </aop:config>
1
1
分享到:
评论

相关推荐

    SSH框架applicationContext.xml头部文件

    `applicationContext.xml`是Spring框架的核心配置文件之一,通过合理的配置可以极大地简化开发工作,提高代码的可维护性和扩展性。对于SSH框架而言,`applicationContext.xml`不仅是Spring容器的基础配置文件,也是...

    applicationContext.xml等文件.rar

    在IT行业中,尤其是在Java Web开发领域,`applicationContext.xml`、`db.properties`、`log4j.properties`以及`spring-mvc.xml`等文件是非常关键的配置文件,它们各自负责不同的功能,对于一个完整的应用程序来说不...

    Spring 2.5-applicationContext.xml提示信息的配置

    在Spring框架中,`applicationContext.xml`是应用上下文的核心配置文件,用于定义bean的创建、依赖关系以及各种服务的配置。这篇博文“Spring 2.5 - applicationContext.xml提示信息的配置”主要探讨了如何在Spring ...

    ApplicationContext.xml

    《ApplicationContext.xml——Spring框架的核心配置文件详解》 在Java开发领域,Spring框架是不可或缺的一部分,它以其强大的依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented ...

    详解spring applicationContext.xml 配置文件

    在Spring框架中,`applicationContext.xml`是核心的配置文件,它定义了应用上下文,即Spring容器,用来管理所有bean的创建、初始化、依赖注入以及生命周期。这个文件使用XML语法,遵循特定的命名空间和schema,以...

    ssm框架基础配置文件web.xml模板springmvc.xml模板applicationContext.xml模板拿来即用

    3. **applicationContext.xml**:这是Spring的上下文配置文件,主要管理服务层(Service)和数据访问层(DAO)的Bean。包括Bean的定义、依赖注入(DI)、事务管理、AOP(面向切面编程)等配置。 - Bean定义:使用`...

    spring4的所有jar包+applicationContext.xml+web.xml

    2. **ApplicationContext.xml**:这是Spring应用上下文的配置文件,它定义了bean的创建、依赖关系以及其他的配置信息。在`applicationContext.xml`中,我们可以声明bean的实例化、属性注入、bean之间的依赖关系、AOP...

    spring applicationContext.xml详细配置

    在Spring框架中,`applicationContext.xml`是核心配置文件,用于定义bean的声明、依赖注入、数据源配置、事务管理等。在这个配置文件中,我们可以深入理解Spring如何管理和协调应用程序的各个组件。以下是对`...

    Spring[applicationContext.xml]灵活性代理

    Spring ISofttone可能是这个压缩包中包含的一个示例项目,它可能演示了如何在Spring应用中使用`applicationContext.xml`配置灵活性代理,包括IoC容器的bean定义、AOP的使用以及事务管理等。通过分析和学习这个项目,...

    spring2.5的applicationContext配置文件

    在Spring框架中,`applicationContext.xml`是核心的配置文件,它定义了bean的实例化、依赖注入、服务的装配以及整个应用上下文的行为。在Spring 2.5版本中,这个配置文件引入了许多增强的功能,提升了开发效率和灵活...

    spring2.0中文开发参考手册.chm.zip

    下面,我们将深入探讨Spring 2.0中的关键知识点。 1. **依赖注入**:Spring 2.0的核心特性之一是依赖注入,它使得组件之间的耦合度降低,提高了代码的可测试性。通过XML配置文件或注解,Spring可以管理对象的生命...

    JavaEE spring和Hibernate整合(有hibernate.cfg.xml)

    3. 创建Spring配置文件:在Spring的配置文件(如applicationContext.xml)中,声明DataSource、SessionFactory和TransactionManager。通常,会使用HibernateTransactionManager作为事务管理器,并通过Bean来注入...

    applicationContext.xml

    applicationContext适合初学者编写spring容器程序学习需要

    SPRING2.0中文文档

    在Spring 2.0中,除了XML配置之外,还引入了基于注解的配置,使得代码更加简洁且易于维护。 三、AOP Spring的AOP模块提供了面向切面编程的能力,可以用于实现如日志记录、事务管理等跨切面关注点。Spring 2.0的AOP...

    SSH三大框架整合 struts2(使用xml配置)+hibernate(使用xml配置)+spring(使用xml配置)

    Spring的XML配置文件(如applicationContext.xml)用于声明bean及其依赖。通过@Autowired注解或XML配置,Spring可以自动装配bean,实现依赖注入。同时,Spring还提供了AOP(面向切面编程)支持,用于添加如日志、...

    Spring2.0 事务处理

    这篇博客将深入探讨Spring 2.0中的事务处理机制,以及如何通过`applicationContext.xml`配置文件来设置和管理事务。 首先,让我们理解什么是事务。事务是一组数据库操作,这些操作被视为一个单一的工作单元,要么...

    Spring 2.0 中文用户指南.rar

    这份中文用户指南详细介绍了Spring 2.0的核心概念、配置方式以及如何在实际开发中应用。以下是一些主要的知识点: 1. **依赖注入(Dependency Injection, DI)**:Spring 2.0的一大核心特性是依赖注入,它允许开发者...

    spring2.0-中文参考手册.pdf

    - **事务管理**:Spring 2.0中的事务管理支持非常强大,不仅支持声明式事务管理,还可以与多种数据库和ORM框架无缝集成。 #### 4. MVC框架 - **概述**:Spring MVC是Spring框架的一部分,它实现了MVC(Model-View-...

    struts1.2+spring2.0整合

    另一种方法是在`struts-config.xml`中使用Spring插件的`&lt;action&gt;`标签,通过`classpath*:`前缀来指定Spring的配置文件。 4. **Spring的DispatcherServlet**: - 在`web.xml`中配置Spring的DispatcherServlet,它...

Global site tag (gtag.js) - Google Analytics