代码(转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>
<!-- mypack.MethodTracing-->
<!-- 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>theTracingBeforeAdvisor</value>
<value>theTracingAfterAdvisor</value>
</list>
</property>
</bean>
<!-- Bean Classes -->
<bean id="beanTarget" class="mypack.BusinessLogic" />
<!-- Advisor pointcut definition for before advice -->
<bean id="theTracingBeforeAdvisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref local="theTracingBeforeAdvice" />
</property>
<property name="pattern">
<value>.*</value>
</property>
</bean>
<!-- <value>.*</value>:该表达式选择advisor所关联到的一个或多个bean上的所有联结点。 -->
<!-- <value>./IBusinessLogic/.foo</value>:该表达式只选择IbusinessLogic接口上的foo()方法的联结点。-->
<!-- 如果是advisor所关联到的bean,则该表达式只选择IBusinessLogic接口上的联结点。 -->
<!-- Advisor pointcut definition for after advice -->
<bean id="theTracingAfterAdvisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref local="theTracingAfterAdvice" />
</property>
<property name="pattern">
<value>.*</value>
</property>
</bean>
<!-- Advice classes -->
<bean id="theTracingBeforeAdvice" class="mypack.MethodTracing.TracingBeforeAdvice" />
<bean id="theTracingAfterAdvice" class="mypack.MethodTracing.TracingAfterAdvice" />
</beans>
IBusinessLogic
public interface IBusinessLogic {
public void foo();
}
BusinessLogic
public class BusinessLogic implements IBusinessLogic {
public void foo()
{
System.out.println(
"Inside BusinessLogic.foo()");
}
}
TracingAfterAdvice.java
public class TracingAfterAdvice implements AfterReturningAdvice {
public void afterReturning(Object arg0, Method arg1, Object[] arg2,
Object arg3) throws Throwable {
System.out.println(
"Hello world! (by " +
this.getClass().getName() +
")");
}
}
TracingBeforeAdvice.java
public class TracingBeforeAdvice implements MethodBeforeAdvice {
public void before(Method arg0, Object[] arg1, Object arg2) throws Throwable {
System.out.println(
"Hello world! (by " +
this.getClass().getName() +
")");
}
}
main
public class MainApplication {
/**
* @param args
*/
public static void main(String[] args) {
// Read the configuration file
// ApplicationContext ctx = new FileSystemXmlApplicationContext("springconfig.xml");
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//Instantiate an object
IBusinessLogic testObject = (IBusinessLogic) ctx.getBean("businesslogicbean");
// Execute the public
// method of the bean
testObject.foo();
}
}
- 描述: 顺序图
- 大小: 19.6 KB
分享到:
相关推荐
本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...
这篇“学习Spring笔记_AOP_Annotation实现和XML实现”主要探讨了如何在Spring中利用注解和XML配置来实现AOP的概念。 AOP,全称Aspect-Oriented Programming,是一种编程范式,旨在将关注点分离,让开发者可以更专注...
- **@Before、@After、@Around、@AfterReturning、@AfterThrowing**:分别表示前置通知、后置通知、环绕通知、返回后通知和异常后通知,它们定义了在哪个切点上执行哪些代码。 - **@Pointcut**:定义切点表达式,...
**Spring AOP 学习笔记及实现Demo** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP的主要目的...
在本篇Spring学习笔记中,我们将深入探讨如何利用Spring配置文件来实现面向切面编程(AOP)。面向切面编程是Spring框架的核心特性之一,它允许我们把关注点分离,将横切关注点(如日志、事务管理、权限控制等)与...
通知(advice)如前置通知、后置通知等,可以使用`@Before`, `@After`, `@Around`等注解来实现。 3. **Spring MVC(Model-View-Controller)**: Spring MVC是Spring框架提供的用于构建Web应用的模块。它遵循MVC...
《AOP学习笔记》 在软件开发中,面向切面编程(Aspect-Oriented Programming,简称AOP)是一种重要的编程范式,它旨在提高代码的可读性和可维护性,通过将关注点分离来实现模块化。AOP的核心概念是切面、连接点、...
### Spring学习笔记:深入理解AOP与Annotation驱动的动态代理 #### 核心知识点解析: 在探讨Spring框架中AOP(面向切面编程)及基于Annotation的动态代理之前,我们首先需要了解AOP的基本概念及其在Spring中的实现...
在本篇Spring学习笔记中,我们将探讨如何使用CGLIB库来实现AOP功能。 CGLIB(Code Generation Library)是一个强大的高性能的代码生成库,它被广泛用于动态代理和运行时织入AOP切面。在Spring中,如果目标类没有...
1. **AOP概念**:讲解面向切面编程的基本概念,包括切面、通知(Before、After、Around、After-Throwing、After-Finalizing)、连接点、切点、织入等。 2. **Spring AOP**:作为最常用的AOP实现,Spring AOP是Java...
标题 "spring学习笔记(十一)" 暗示了这是一篇关于Spring框架的深度学习文章,特别是关于AOP(面向切面编程)和配置方面的内容。在这个笔记中,作者可能详细探讨了Spring如何实现AOP以及如何配置相关组件。下面我们将...
在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...
【SpringBoot学习笔记——AOP全局统一日志管理】 在软件开发中,日志记录是一项至关重要的任务,它有助于追踪操作记录、系统监控以及满足审计需求。SpringBoot作为一个流行的Java微服务框架,提供了AOP(面向切面...
2. **通知(Advice)**:在特定连接点执行的代码,如前置通知(Before)、后置通知(After)、返回后通知(After Returning)、异常后通知(After Throwing)和环绕通知(Around)。 3. **切点(Pointcut)**:定义...
总结,Spring学习笔记(七)的重点是讲解了Spring中的代理模式,包括静态代理和动态代理的概念,以及如何在AOP中应用这些代理来增强功能。通过理解这些知识,你可以更好地掌握Spring框架,提升在实际开发中的能力。
【标题】"Spring学习笔记(十)"主要涵盖了Spring框架中的AOP(面向切面编程)这一核心概念。在Spring框架中,AOP被用来实现横切关注点,如日志记录、事务管理、性能监控等,它允许程序员将这些通用功能模块化,减少...
【SpringMVC+Mybatis学习笔记】 SpringMVC和Mybatis是Java开发中常见的两个框架,它们分别负责Web层和持久层的管理。SpringMVC是Spring框架的一部分,提供了强大的模型-视图-控制器(MVC)架构模式,用于构建高性能...
### Spring MVC 学习笔记之 AOP 面向切面编程详解 #### 一、AOP 概念概述 面向切面编程(Aspect Oriented Programming, AOP)是一种编程范式,它允许程序员定义“切面”来封装那些与业务逻辑本身无关的功能,比如...