spring对AOP的支持(采用Annotation方式)
1、spring的依赖包配置
* SPRING_HOME/dist/spring.jar
* SPRING_HOME/lib/log4j/log4j-1.2.14.jar
* SPRING_HOME/lib/jakarta-commons/commons-logging.jar
* SPRING_HOME/lib/aspectj/*.jar
2、将横切性关注点模块化,建立SecurityHandler.java
3、采用注解指定SecurityHandler为Aspect
4、采用注解定义Advice和Pointcut
5、启用AspectJ对Annotation的支持,并且将目标类和Aspect类配置到IoC容器中
6、开发客户端
在xml中添加启用Annotation
<aop:aspectj-autoproxy/>
目标类
@Aspect
public class SecurityHandler {
/**
* 定义Pointcut,Pointcut的名称为addAddMethod(),此方法没有返回值和参数
* 该方法就是一个标识,不进行调用
*/
@Pointcut("execution(* add*(..))")
private void addAddMethod(){};
/**
* 定义Advice,表示我们的Advice应用到哪些Pointcut订阅的Joinpoint上
*/
@Before("addAddMethod()")
//@After("addAddMethod()")
private void checkSecurity() {
System.out.println("-------checkSecurity-------");
}
}
调用
public static void main(String[] args) {
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
UserManager userManager = (UserManager)factory.getBean("userManager");
userManager.addUser("张三", "123");
}
AOP主要概念:
Cross Cutting Concern
是一种独立服务,它会遍布在系统的处理流程之中
Aspect
对横切性关注点的模块化
Advice
对横切性关注点的具体实现
Pointcut
它定义了Advice应用到哪些JoinPoint上,对Spring来说是方法调用、
JoinPoint
Advice在应用程序上执行的点或时机,Spring只支持方法的JoinPoint,这个点也可以使属性修改,如:Aspecj可以支持
Weave
将Advice应用到Target Object上的过程叫织入,Spring支持的是动态织入
Target Object
Advice被应用的对象
Proxy
Spring AOP默认使用JDK的动态代理,它的代理是运行时创建,也可以使用CGLIB代理
Introduction
可以动态的为类添加方法
分享到:
相关推荐
spring-aop-4.0.4.RELEASE.jar com.springsource.net.sf.cglib-2.2.0.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar spring-aspects-4.1.2.RELEASE.jar ...
它包括了如`<context:component-scan>`、`<context:annotation-config>`等元素,使得我们可以方便地启用注解驱动的配置和组件扫描,发现并自动装配带有特定注解的类。此外,它还支持消息源、AOP代理、事件监听等特性...
在本篇内容中,我们将深入探讨如何使用注解的方式来配置Spring AOP,以便在实际开发中更好地利用这一特性。 首先,我们要理解Spring AOP的基本概念。AOP通过切面(Aspect)实现了代码的模块化,切面包含了通知...
- **配置类(Configuration Class)**:在Spring Boot项目中,我们可以通过一个配置类启用AOP并注册我们的切面。这个类通常会有一个`@EnableAspectJAutoProxy`注解,表明我们要使用Spring的代理来实现AOP。 - **...
在Spring中,切面可以通过`@Aspect`注解的类来表示,如`org.springframework.aop.aspectj.annotation.AnnotationAspectAdapter`。 3. **通知(Advice)**:通知是切面中定义的行为,包括前置通知、后置通知、异常...
基于Log4j+SpringAOP+Annotation的可注解日志切面组件 使用方式 @Log(logAfter = true, logBefore = true) public returntype methodName(params) 测试类com.liam.aop.aspect.test.AopLogAnnotationTest 测试输出 ...
在Spring中,可以通过实现`org.aspectj.lang.annotation.Aspect`接口或者使用注解`@Aspect`来定义一个切面类。 2. **定义通知(Advice)**:通知是切面在特定连接点(Join Point,如方法调用)执行的代码。Spring...
- **<aop:aspectj-autoproxy/>**:在Spring配置文件中启用AspectJ自动代理。 4. **实际应用示例**: - 日志记录:通过切面记录方法的调用时间、参数等信息。 - 事务管理:利用AOP进行数据库事务的开启、提交、...
047-spring-aop-annotation快速实现.mp4 048-spring-aop-获取切点详细信息.mp4 049-spring-aop-切点表达式语法.mp4 050-spring-aop-统一切点管理.mp4 051-spring-aop-环绕通知.mp4 052-spring-aop-切面优先级...
047-spring-aop-annotation快速实现.mp4 048-spring-aop-获取切点详细信息.mp4 049-spring-aop-切点表达式语法.mp4 050-spring-aop-统一切点管理.mp4 051-spring-aop-环绕通知.mp4 052-spring-aop-切面优先级...
047-spring-aop-annotation快速实现.mp4 048-spring-aop-获取切点详细信息.mp4 049-spring-aop-切点表达式语法.mp4 050-spring-aop-统一切点管理.mp4 051-spring-aop-环绕通知.mp4 052-spring-aop-切面优先级...
047-spring-aop-annotation快速实现.mp4 048-spring-aop-获取切点详细信息.mp4 049-spring-aop-切点表达式语法.mp4 050-spring-aop-统一切点管理.mp4 051-spring-aop-环绕通知.mp4 052-spring-aop-切面优先级...
在Spring1.2或之前的版本中,实现AOP的传统方式就是通过实现Spring的AOP API来定义Advice,并设置代理对象。Spring根据Adivce加入到业务流程的时机的不同,提供了四种不同的Advice:Before Advice、After Advice、...
在本项目"spring-txn-annotation-demo.zip"中,我们主要关注的是如何使用Spring框架的注解来管理事务,这是一个适合初学者学习和研究的示例。该项目基于Spring 5.0.2版本,结合Maven构建工具以及IntelliJ IDEA(一个...
本项目"spring-boot-mybatis-annotation-mulidatasource"着重于利用Spring Boot和MyBatis注解实现多数据源连接,这在处理多个数据库或者分库分表的场景中非常实用。 首先,Spring Boot提供了自动配置功能,使得我们...
本压缩包“spring-boot-annotation-spel.zip”显然是关于如何在自定义注解中运用SPEL表达式的实例教程。 SPEL是Spring框架提供的一种强大的表达式语言,用于在运行时查询和操作对象图。它允许我们执行各种操作,如...
本实例将详细探讨如何通过注解(Annotation)来实现Spring AOP的方法拦截。 一、Spring AOP基础 Spring AOP是Spring框架的一部分,它提供了一种在运行时织入横切关注点(如日志、事务管理等)到目标对象的能力。AOP...
nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator]: ...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理、安全性等。本示例将简要介绍如何在Spring应用中实现AOP,通过实际的...
例如,我们可以看到使用`<aop:config>`标签来定义切面,`<tx:annotation-driven>`来启用基于注解的事务管理。 ```xml <aop:config> <aop:aspect id="transactionAspect" ref="transactionManager"> <!-- 定义...