1.先定义一个简单接口:
package org.pan.service;
public interface PersonService {
public void save();
public void update();
public void delete();
}
2.实现这个接口:
package org.pan.service.impl;
import org.pan.service.PersonService;
public class PersonServiceBean implements PersonService{
@Override
public void delete() {
System.out.println("调用delete方法");
}
@Override
public void save() {
System.out.println("调用save方法");
}
@Override
public void update() {
System.out.println("调用update方法");
}
}
3.定义一个普通的java类,这个类将作为拦截类:
package org.pan.aop;
public class MyInterceptor {
public void doAccessMethod(){
System.out.println("前置通知!");
}
public void afterMethod(){
System.out.println("后置通知!");
}
public void afterException(){
System.out.println("后置例外通知!");
}
public void around(){
System.out.println("环绕通知!");
}
}
4.这是spring的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:p="http://www.springframework.org/schema/p"
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 ">
<aop:aspectj-autoproxy />
<bean id="personService" class="org.pan.service.impl.PersonServiceBean" />
<bean id="myInterceptor" class="org.pan.aop.MyInterceptor"/>
<aop:config>
<aop:aspect id="asp" ref="myInterceptor">
<aop:pointcut id="personPointCut" expression="execution(* org.pan.service.impl.PersonServiceBean.*(..))"/>
<aop:before method="doAccessMethod" pointcut-ref="personPointCut"/>
<aop:after-returning method="afterMethod" pointcut-ref="personPointCut"/>
<aop:after-throwing method="afterException" pointcut-ref="personPointCut"/>
</aop:aspect>
</aop:config>
</beans>
这就是一个简单的实例了,现在来个单元测试一下:
package junit.test;
import org.junit.BeforeClass;
import org.junit.Test;
import org.pan.service.PersonService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringAopTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@Test public void interceptorTest(){
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
PersonService personService=(PersonService)ctx.getBean("personService");
personService.save();
}
}
运行后便会在控制台输出以下信息了:
前置通知!
调用save方法
后置通知!
- 大小: 14 KB
分享到:
相关推荐
本篇我们将深入探讨如何使用注解的方式来实现Spring AOP开发。 ### 一、注解基础 在Spring AOP中,主要使用以下几种注解: 1. `@Aspect`:定义一个切面类,切面是AOP的核心,包含通知(advisors)和切点...
在Spring框架中,AOP通过代理实现,可以使用XML配置或注解进行配置。本篇文章主要聚焦于Spring AOP的XML配置通知。 **一、AOP概念解析** 1. **切面(Aspect)**:一个关注点的模块化,例如事务管理就是一个切面。...
Spring AOP,即Spring的面向切面编程,是Spring框架中的一个重要组成部分,它提供了一种在不修改原有代码的情况下,对程序...虽然现在更多地使用注解式配置,但理解XML配置方式对于全面掌握Spring AOP仍然至关重要。
本篇文章将深入探讨如何通过XML配置来实现Spring AOP,并结合提供的源码和jar包进行详细讲解。 首先,我们需要理解Spring AOP的基本概念。AOP是一种编程范式,用于将关注点(如日志、安全检查)与业务逻辑分离,...
本实例主要探讨的是使用XML配置的方式来实现AOP。XML配置虽然相比注解方式略显繁琐,但它提供了更大的灵活性,尤其是在需要对多个类或方法应用相同通知(Advice)时。 首先,我们需要在Spring的配置文件中启用AOP...
在使用Spring AOP时,我们可以通过XML配置或注解的方式来定义切面。例如,可以使用`@Aspect`注解定义一个切面类,`@Before`、`@After`等注解来声明通知,`@Pointcut`定义切点表达式。 在实际开发中,Spring AOP广泛...
Spring AOP通过XML配置文件提供了灵活的方式来定义和管理切面、切入点和通知,使得我们可以轻松地在应用程序中实现横切关注点的解耦。了解和掌握Spring AOP的配置实现,有助于提升我们构建松散耦合、易于维护的系统...
在实际开发中,Spring AOP结合XML配置可以提供灵活且强大的功能。然而,随着Spring的发展,基于注解的AOP配置逐渐成为主流,因为它的简洁性和可读性更强。但这并不意味着XML配置方式失去了价值,尤其是在需要更细...
本项目整合了这三个框架,并使用XML配置来管理各个组件,实现了基本的CRUD(创建、读取、更新、删除)功能以及分页查询。 首先,Struts2作为表现层框架,负责处理HTTP请求,控制应用程序的流程。通过定义Action类和...
在"Spring AOP管理XML版"中,我们主要关注的是通过XML配置来管理AOP。以下是一些关键的XML配置元素: - `<aop:config>`:这是AOP配置的根元素,包含所有其他的AOP配置。 - `<aop:aspect>`:定义一个切面,内部可以...
JavaEE Spring AOP(面向切面编程)是企业级应用开发中的重要技术,它允许...无论是通过注解还是XML配置,掌握Spring AOP的使用都能显著提升我们的开发效率。在实践中,可以根据项目的具体需求选择最适合的实现方式。
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许程序员在不修改源代码的情况下,通过在...在实际开发中,结合使用XML配置、注解配置以及适当的动态代理策略,可以使AOP功能更好地服务于我们的应用程序。
Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要模块,它通过提供声明式的方式来实现面向切面编程,从而简化了应用程序的开发和维护。在Spring AOP中,我们无需深入到每个...
在实际开发中,你可以通过配置XML或使用注解来定义切面,以及通知的触发条件。例如,使用`@Aspect`注解定义切面类,使用`@Before`、`@After`等注解标记通知方法,使用`@Pointcut`定义切点表达式。 总的来说,Spring...
在IT行业中,Spring框架...总结来说,Spring AOP和AspectJ的结合使用,借助XML配置,为开发者提供了一种强大而灵活的方式去处理横切关注点。通过学习并掌握这一技术,开发者可以写出更加模块化、易于维护的企业级应用。
在IT行业中,Spring框架是Java企业级应用开发的首选,其强大的功能和灵活性深受...通过对这些内容的分析和实践,你可以深入理解Spring 2.0中AOP的概念及其XML配置方式,从而在实际项目中更加灵活地应用面向切面编程。
在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...
在Spring XML配置文件中,可以声明切面和通知,如下: ```xml <aop:config> <aop:aspect id="loggingAspect" ref="loggingService"> <aop:before method="logBefore" pointcut="execution(* com.example.service....
Spring支持两种配置方式:XML配置和Java配置。XML配置是早期常用的,通过`<bean>`标签定义Bean及其依赖关系。Java配置则是从Spring 3.0引入的,使用@Configuration和@Bean注解,使得配置更加直观且类型安全。 4. ...