看了文档,基于@JAspect支持的Spring AOP不知什么原因,编写相关的例子程序,没有运行成功,所以暂时不能写出来供大家交流,如果调试出来后,一定补上。现在先来看看Spring中另一种AOP的支持-基于Schema的AOP支持。
和以前一样,还是先把例子程序写出来,有什么注意的地方会在稍后注明。
1、通知
package com.javaeye.sunjiesh.aop.aspect;
public class AspectExample {
/**
* 前置通知(Before advice)
*/
public void beforeAdvice() {
System.out.println("beforeAdvice");
}
/**
* 带参数的前置通知(Before advice)
* @param parameter
*/
public void beforeAdvice2(String parameter){
System.out.println("beforeAdvice2");
System.out.println("parameter is "+parameter);
}
/**
* 后通知(After (finally) advice)
*/
public void afterAdvice() {
System.out.println("afterAdvice");
}
/**
* 返回后通知(After returning advice)
* @param parameter 连接点运行后返回的参数
*/
public void afterReturnAdvice(String parameter) {
System.out.println("afterReturnAdvice");
System.out.println("parameter is "+parameter);
}
/**
* 抛出异常后通知(After throwing advice)
* @param ex 连接点运行时发生的异常
*/
public void afterThrowingAdvice(Exception ex) {
System.out.println("afterThrowingAdvice");
System.out.print(ex.getMessage());
}
/**
* 环绕通知(Around Advice)
*/
public void aroundAdvice() {
System.out.println("aroundAdvice");
}
}
2、连接点
package com.javaeye.sunjiesh.aop.aspect;
public class ServiceExample {
public void adviceTest(){
System.out.println("adviceTest is run");
}
public String adviceTest2(){
System.out.println("adviceTest2 is run");
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println(e.getMessage());
}finally{
return null;
}
}
}
3、spring配置文件
<?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:context="http://www.springframework.org/schema/context"
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/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<bean id="aspectExample" class="com.javaeye.sunjiesh.aop.aspect.AspectExample"></bean>
<bean id="serviceExample" class="com.javaeye.sunjiesh.aop.aspect.ServiceExample"></bean>
<bean id="serviceExample2" class="com.javaeye.sunjiesh.aop.aspect.ServiceExample2"></bean>
<aop:config>
<aop:aspect id="myAspect" ref="aspectExample">
<aop:pointcut id="myPointcut"
expression="execution(* com.javaeye.sunjiesh.aop.aspect.ServiceExample.*(..))" />
<aop:before method="beforeAdvice" pointcut-ref="myPointcut" />
<aop:after method="afterAdvice" pointcut-ref="myPointcut" />
<aop:after-returning method="afterReturnAdvice"
returning="parameter" pointcut-ref="myPointcut" />
<aop:after-throwing method="afterThrowingAdvice"
throwing="ex" pointcut-ref="myPointcut" />
</aop:aspect>
</aop:config>
<aop:config>
<aop:aspect id="myAspect2" ref="aspectExample">
<aop:pointcut id="myPointcut2"
expression="execution(* com.javaeye.sunjiesh.aop.aspect.ServiceExample2.adviceTest(String)) and args(parameter)" />
<aop:before method="beforeAdvice2" pointcut-ref="myPointcut2" />
</aop:aspect>
</aop:config>
</beans>
4、主函数
package com.javaeye.sunjiesh.aop.aspect;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AspectMain {
public static void main(String args[]) {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"spring-beans4.xml");
ServiceExample serviceExample=(ServiceExample) ctx.getBean("serviceExample");
serviceExample.adviceTest();
serviceExample.adviceTest2();
System.out.println("使用通知参数");
ServiceExample2 serviceExample2=(ServiceExample2) ctx.getBean("serviceExample2");
serviceExample2.adviceTest("hello");
}
}
分享到:
相关推荐
在4.2.5版本中,Spring引入了对各种XML Schema的支持,极大地简化了配置过程,提高了代码的可读性和可维护性。本文将深入探讨这些schema,以及它们如何帮助开发者更好地理解和使用Spring Framework。 首先,我们来...
在Spring1.2或之前的版本中,实现AOP的传统方式就是通过实现Spring的AOP API来定义Advice,并设置代理对象。Spring根据Adivce加入到业务流程的时机的不同,提供了四种不同的Advice:Before Advice、After Advice、...
标题 "spring-aop-aspectj(Schema)-case" 指涉的是Spring AOP(面向切面编程)中使用AspectJ的Schema配置方式的一个案例。Spring AOP是Spring框架的一部分,它允许我们在不修改源代码的情况下,通过"切面"来实现对...
**Spring AOP:基于Schema配置的总结与案例** 在Java企业级开发中,Spring框架以其强大的功能和灵活性深受开发者喜爱。其中,Spring AOP(面向切面编程)是解决横切关注点问题的一个重要工具,它允许我们把业务逻辑...
`spring-aop-3.0.xsd` 是 Spring AOP 的 XML 配置文件,定义了与 AOP 相关的元素和属性。例如,你可以在这里定义切入点(pointcut)、通知(advises)以及代理配置。将此文件添加到 Eclipse 的 XML 目录(catalog)...
**Spring AOP 基于Schema的AOP支持** 在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许我们定义横切关注点,如日志、事务管理等,这些关注点可以独立于业务逻辑进行管理。Spring AOP提供了基于XML...
本篇文章将详细介绍 Spring AOP 的核心概念、如何配置以及所依赖的 Jar 包,特别是 `AspectJ 1.6.12` 版本。 1. **AOP 概念** - **切面(Aspect)**:切面是关注点的模块化,如日志、事务管理等,它们横切多个对象...
本次我们聚焦于"spring-5.2.9.RELEASE-schema.zip"压缩包,通过其包含的子文件,深入探讨Spring 5.2.9版本的关键概念和组件。 1. **Mvc(Model-View-Controller)模块**: Spring MVC是Spring框架的一个重要组成...
标题中的"spring-aop-4.2.xsd.zip"表明这是一个与Spring框架的AOP(面向切面编程)相关的资源,版本为4.2,并且是XML Schema Definition(XSD)文件的压缩包。XSD文件用于定义XML文档的结构和数据类型,它在Spring...
Spring AOP通过代理模式实现这一目标,支持动态代理(基于JDK)和CGLIB代理(对于无接口的类)。 `spring-aop.xsd`包含了不同版本(2.5、3.1、3.2)的XML配置元素和属性定义,这意味着随着Spring框架的版本更新,...
本篇文章将深入探讨Spring AOP的Schema实现,即基于XML配置的方式来理解和应用AOP。 一、Spring AOP基础概念 1. 切面(Aspect):切面是关注点的模块化,例如日志、事务管理。在Spring AOP中,切面由通知(Advice...
开发者可以通过阅读这些文档,理解Spring的核心概念,如依赖注入(Dependency Injection)、AOP(面向切面编程)、MVC(Model-View-Controller)框架、数据访问等,从而更好地利用Spring进行应用开发。 库文件...
3. 在配置AOP时,确保Spring容器已经启用AOP支持,即`<aop:config>`标签的存在。 通过上述XML配置,我们可以灵活地控制Spring AOP的各个元素,实现面向切面的编程,提升代码的可读性和可维护性。了解并熟练掌握这些...
Spring AOP是基于代理的,它可以为普通Java对象(POJOs)提供拦截器模式的功能。本实例将详细介绍如何在Spring 3.2.8版本中实现AOP。 首先,我们需要理解AOP的基本概念。AOP的核心是切面(Aspect),它包含了通知...
1. `<aop:config>`:这是Spring AOP配置的根元素,用于开启基于XML的AOP配置。 2. `<aop:pointcut>`:定义一个切入点,即一组连接点。切入点表达式可以用简单的名称引用,也可以使用AspectJ的表达式语言来精确匹配...
每个jar包都有特定的功能,例如`spring-context`负责上下文管理,`spring-beans`处理Bean的生命周期,`spring-web`支持Web应用程序,还有其他如AOP(面向切面编程)、JDBC、ORM(对象关系映射)等模块。开发者可以...
Spring2.5和Hibernate3集成 采用声明式事务 1.声明式事务的配置 * 配置sessionFactory * 配置事务管理器 * 配置事务的传播特性 * 配置哪些类哪些方法使用事务 2.编写业务逻辑方法 * 继承...
在给定的压缩包中,包含了`spring-beans-3.0.xsd`、`spring-context-3.0.xsd`、`spring-aop-3.0.xsd`和`spring-tx-3.0.xsd`这四个重要的XSD文件,它们分别对应Spring框架的不同核心模块。 1. **spring-beans-3.0....
1. **配置Spring容器**:首先,我们需要一个Spring配置文件(如`springstudy02/spring-context.xml`),在其中定义bean并启用AOP支持。例如: ```xml <beans xmlns="http://www.springframework.org/schema/beans" ...