Spring倡导以依赖注入(IOC)的方式来装配Bean。对于AOP也不例外。
Spring提供了ProxyFactoryBean类来实现AOP的装配。
- MethodBeforeAdvice
- AfterReturningAdvice
- ThrowsAdvice
- MethodInterceptor(不要忘记调用其中的invocation.proceed())
ProxyFactroyBean是一个工厂类,它返回的对象封装了目标对象target和增强的AOP代理。
MethodInterceptor称为环绕通知。除了实现MethodBeforeAdvice,AfterReturningAdvice,ThrowsAdvice这三种Advice功能外,还可以控制目标对象的方法是否执行。
编写Advisor
为了确定Advice所要增强的目标对象的方法,Spring定义了Advisor的概念。
Advisor简单的理解为一个Advice和一个Pointcut的组合。
1.NameMatchMethodPointcut
<property name="&lt;font color=">mappedName" value="methodName" />
2.AbstractRegexpMethodPointcut
<property name="&lt;font color=">pattern" value=".*login" />
AOP代理对象实际上包含了一个由Advisor和Advice组成的拦截链。当客户端调用AOP代理对象的某个方法时,拦截链上的每个Advisor和Advice都有机会对该方法调用进行增强。不同的是,Advice总是增强所有的方法,而Advisor同时包含了Advice和Pointcut。Advisor会通过Pointcut计算是否应该调用Adivce对某个方法进行增强。
使用自动代理
Spring 的自动代理功能实际是由BeanPostProcessor实现的。
Spring提供了几种常用的实现自动代理的BeanPostProcessor。
1. BeanNameAutoProxyCreator :根据Bean的id或者name属性来查找目标Bean并自动为其代理。
2. DefaultAdvisorAutoProxyCreator: 根据当前容器的Advisor决定每个Bean是否可以被代理。
3.
4.AnnotationAwareAspectJAutoProxyCreator :根据AspectJ的注解来决定是否为一个Bean创建代理。
</property>
</property>
使用@AspectJ实现AOP
使用AspectJ注解的最大优点就是将多个Advisor集中到一个类中,并且配置极为简单。
分享到:
相关推荐
接下来,我们使用Spring AOP来实现数据过滤。这通常涉及以下步骤: 1. **定义切点(Pointcut)**:确定哪些方法需要进行权限检查。这可以通过注解或XML配置来实现,例如定义一个名为`@DataAccess`的注解,并将其...
在项目中,我们通常会将这个jar包引入到类路径下,以便使用Spring AOP的功能。 总的来说,Spring AOP通过提供面向切面的编程能力,极大地提高了代码的可复用性和可维护性,降低了系统复杂度,特别是在处理共性问题...
现在,我们回到主题——"springaop依赖的jar包"。在Spring 2.5.6版本中,使用Spring AOP通常需要以下核心jar包: - `spring-aop.jar`:这是Spring AOP的核心库,包含了AOP相关的类和接口。 - `spring-beans.jar`:...
标题 "使用Spring AOP对Web应用数据进行Memcached缓存" 涉及到的关键技术是Spring AOP(面向切面编程)和Memcached,这是一种常见的高性能、分布式内存对象缓存系统。在Web应用程序中,使用缓存可以显著提高数据访问...
要使用Spring AOP,首先需要在Spring配置文件或使用Java配置类中启用AOP代理。在XML配置中,这可以通过 `<aop:config>` 标签实现,或者在Java配置类中添加 `@EnableAspectJAutoProxy` 注解。这两个选项都会创建一个...
要使用Spring AOP,通常需要引入以下几个核心的Jar包: 1. **aspectj-1.7.3.jar**:这是AspectJ库的核心部分,提供了AOP语言支持,包括AspectJ编译器和运行时库。AspectJ是Java平台上的一个开源项目,它扩展了Java...
我们在捕获到异常并对异常进行处理时可能会遇到如下一些问题: 1.不确定应如何处理这些异常 2.需要记录异常日志时没有记录,或者异常在不同的地方重复记录,使得排错调试不方便 3.处理日志时,需要在每一个try-catch...
使用Spring AOP,开发者可以定义切面,声明切入点(即关注点的定位),编写通知(即实际的增强代码),并通过配置将它们应用到目标对象上。这样,我们可以保持业务逻辑的清晰,同时实现系统级的服务,如事务管理、...
本篇文章将深入探讨如何在Spring MVC中配置和使用基于注解的AOP。 一、Spring AOP基础知识 1. **切面(Aspect)**:切面是关注点的模块化,例如日志、事务管理等。在Spring AOP中,切面可以是Java类或@Aspect注解...
使用 Spring AOP 进行方法耗时监测的好处有以下几点: 1. 代码实现简单,易于维护:使用 Spring AOP 可以将耗时监测的逻辑与业务逻辑进行解耦,避免业务逻辑代码的冗余和代码维护难度的提高。 2. 安全性高:使用 ...
在使用Spring AOP时,通常需要引入特定的jar包来支持其功能。这个"spring aop用到jar包.rar"压缩文件很可能包含了实现Spring AOP所需的核心库。 首先,Spring框架的基础jar包是必不可少的,例如`spring-core.jar`,...
要使用Spring AOP,首先你需要包含以下关键的jar包: 1. spring-aop.jar:这是Spring AOP的核心库,包含了AOP的API和实现。 2. spring-beans.jar:Spring的bean容器,负责管理和装配bean,AOP也是基于这个容器实现...
在描述中提到的问题,用户在尝试使用Spring AOP的注解`@Aspect`时遇到了没有提示的情况。这通常是因为缺少了相关的jar包依赖。Spring AOP的实现离不开Spring核心库以及AOP联盟(AOP Alliance)的jar包。在Spring 3.2...
4. **使用Spring AOP的jar包**: - `spring-aop.jar`:Spring AOP的核心库,包含了AOP的API和实现。 - `spring-beans.jar`:Spring Bean的定义和管理,AOP与之紧密关联。 - `spring-core.jar`:Spring的基础库,...
在本示例中,"springaop.zip" 包含了一个使用XML配置的Spring AOP应用实例,可以直接运行,配合相关的博客文章学习效果更佳。 在Spring AOP中,我们首先需要了解几个核心概念: 1. **切面(Aspect)**:切面是关注...
本文将详细介绍在使用Spring AOP时所需的两个关键jar包:aopalliance-1.0.jar和aspectjweaver-1.8.9.jar。 首先,让我们了解一下什么是Spring AOP。AOP(Aspect-Oriented Programming,面向切面编程)是一种编程...
使用Spring AOP,可以在方法执行前后自动记录日志,无需在每个方法内部添加日志代码。 3.2 事务管理 Spring AOP提供声明式事务管理,可以在切点上定义事务边界,使得事务处理代码不再侵入业务逻辑。 3.3 安全控制...
本节将详细介绍如何使用Spring AOP实现流程日志跟踪,主要关注于如何通过AOP拦截特定的类和方法来进行日志记录。 ##### 3.1 配置Spring AOP 在Spring配置文件中定义切面和切入点表达式是非常关键的一步。一般来说...