代码(转bea)
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- Bean configuration -->
<bean id="businesslogicbean"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>mypack.IBusinessLogic</value>
</property>
<property name="target">
<ref local="beanTarget" />
</property>
<property name="interceptorNames">
<list>
<value>theAroundAdvisor</value>
</list>
</property>
</bean>
<!-- Bean Classes -->
<bean id="beanTarget" class="mypack.BusinessLogic" />
<!-- Advisor pointcut definition for around advice -->
<bean id="theAroundAdvisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref local="theAroundAdvice" />
</property>
<property name="pattern">
<value>.*</value>
</property>
</bean>
<!-- Advice classes -->
<bean id="theAroundAdvice" class="mypack.AroundAdvice" />
</beans>
IBusinessLogic .java
public interface IBusinessLogic {
public void foo();
}
BusinessLogic .java
public class BusinessLogic implements IBusinessLogic {
public void foo() {
System.out.println("Inside QBusinessLogic.foo()");
}
}
AroundAdvice.java
public class AroundAdvice implements MethodInterceptor {
public Object invoke(MethodInvocation invocation) throws Throwable {
System.out.println("Hello world! (by " + this.getClass().getName()
+ ")");
//从around通知内调用foo()方法,可以使用proceed()方法,可从invoke(..)方法的MethodInvocation参数中得到它。
invocation.proceed();
// invocation.getArguments()[0] = new Integer(20);
System.out.println("Goodbye! (by " + this.getClass().getName() + ")");
return null;
}
}
MainApplication.java
public class MainApplication {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
IBusinessLogic testObject = (IBusinessLogic)ctx.getBean("businesslogicbean");
testObject.foo();
}
}
- 描述: 顺序图
- 大小: 14.5 KB
分享到:
相关推荐
在XML配置中,我们需要定义`<aop:config>`、`<aop:aspect>`、`<aop:before>`、`<aop:after>`等元素来声明和配置切面。虽然这种方式较为繁琐,但它提供了更高的灵活性,可以更细致地控制切面的行为。 例如,一个简单...
Spring AOP,即面向切面编程,是Spring框架的核心组件之一,它允许程序员在不修改原有业务代码的情况下,对程序进行功能增强。...通过学习和实践,你可以更好地在Spring框架中利用AOP解决实际问题。
1. 静态代理(XML定义):通过Spring的`<aop:config>`标签来配置切面,包括定义切入点表达式和通知类型。 2. 动态代理(基于注解):使用`@Aspect`注解定义切面,`@Before`、`@After`、`@Around`等注解定义通知,...
AOP联盟:aopalliance.jar API包a set of AOP Java interface .
Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点,如日志、事务管理、性能监控等。在Java应用中,AOP...
在XML中,我们使用`<aop:before>`, `<aop:after>`, `<aop:around>`等元素定义不同类型的通知。例如,定义一个前置通知: ```xml <aop:before method="beforeAdvice" pointcut-ref="serviceMethods"/> ``` 这里的...
标题中的"ssh_full.zip"可能是指一...源码可能提供了详细的实现示例,对于学习SSH框架集成和AOP编程的开发者来说是一份宝贵的资源。下载这个压缩包,开发者可以深入理解如何在实际项目中运用这些技术,提升自己的技能。
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许程序员在不修改原有业务代码的情况下,插入额外的逻辑或监控行为。本文将深入解析Spring AOP如何获取代理对象,即Proxy。 首先,我们需要理解AOP的...
面向切面编程(AOP)是一种编程范式,主要用于处理系统中的横切关注点,比如日志、事务管理...通过学习和理解这些示例,开发者可以更好地理解和运用AOP来提高代码的可维护性和可读性,降低复杂度,实现更加优雅的编程。
标题 "aop_ioc_rest_redis" 暗示了这个主题涵盖了四个主要的IT概念:AOP(面向切面编程)、IOC(控制反转)、REST(代表性状态转移)和Redis(一个内存数据结构存储系统)。接下来,我们将深入探讨这些概念以及它们...
<aop:aspect id="loggingAspect" ref="loggingService"> <aop:before method="logBefore" pointcut="execution(* com.example.service.*.*(..))"/> <aop:after method="logAfter" pointcut="execution(* ...
如果希望使用XML配置,可以在Spring配置文件中定义<aop:aspect>元素来声明切面,以及<aop:before>、<aop:after>等子元素来定义通知。 Spring AOP的优势在于其灵活性和易于使用。通过切面,我们可以把关注点分离,...
Spring框架是Java开发中最常用的轻量级框架之一,它的核心特性包括依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)。这两个概念是Spring框架的基石,极大地简化了...
Java AOP(面向切面编程)是软件设计中的一个重要概念,它允许程序员定义“切面”,这些切面封装了特定的、与业务逻辑不直接相关的关注点,如日志、事务...因此,深入学习和实践Java AOP是提升Java开发能力的重要一步。
【标题】"spring-aop.rar_java aop_spring aop" 涉及的主要知识点是Spring框架中的面向切面编程(AOP)以及Java基础知识。这个压缩包可能包含了一个简单的Spring AOP应用示例,同时也涵盖了Java的一些核心概念,如...
AOP(Aspect Oriented Programming,面向切面编程)是软件开发中的一个重要概念,它将关注点分离,使得我们可以把核心业务逻辑与系统服务(如日志、事务管理等)进行解耦。在Java世界里,Spring框架是实现AOP最常用...
《Spring 2.5 AOP库的深度解析》 在软件开发中,Spring框架以其强大的功能和灵活性,已经成为Java企业级应用的首选框架之一。在Spring 2.5版本中,AOP(面向切面编程)是其核心特性之一,为开发者提供了优雅地处理...
sisu-guice-3.1.3-no_aop.jar
在压缩包文件 "aop_ioc_rest" 中,可能包含了博主实现这些功能的源代码,供读者学习和参考。这些代码可能分为几个部分,如AOP相关的类库、IOC容器的实现代码以及REST服务的控制器和路由定义。 通过阅读这些源码,...