Spring核心之AOP

AOP面向切面编程,底层是通过动态代理实现的。
1.动态代理:
jdk动态代理,使用jdk中的proxy,method,invacaitonhanderl创建代理对象。jdk动态代理要求目标必须实现接口。
cglib动态代理,创建代理对象,原理是继承,通过继承目标类,创建子类,要求

2.动态代理的作用:
不需要改动目标类中的方法,实现功能增强,减少重复代码,降低耦合。

切面:
切面,就是功能的意思,切面一般为非业务功能,切面一般为日志、事务、参数验证、权限管理等非业务通用功能。

AOP面向切面:
是动态代理的一种实现规范,更简单,逻辑更清晰。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring框架中的AOP(Aspect Oriented Programming,面向切面编程)是一个强大的特性,它允许开发者将跨越业务逻辑的行为,如事务管理、日志记录、安全检查等,抽取出来作为独立的模块(切面),并将其应用到多个目标对象(即被通知者)上,而无需修改原有代码。Spring AOP基于Java的动态代理机制,主要包含以下几个核心组件: 1. **切面(Aspect)**:AOP核心概念,它是业务逻辑和横切关注点的结合。切面由一组通知(advice)组成,通知可以是前置通知(Before)、后置通知(After)、环绕通知(Around)或抛出通知(Throwing)。 2. **通知(Advice)**:是切面中执行的实际代码块,用于执行特定的行为,比如方法调用前的验证、执行操作后的清理等。Spring提供了多种类型的通知,如`@Before`、`@AfterReturning`、`@AfterThrowing`等。 3. **连接点(Join Point)**:是AOP中的一个重要概念,表示程序执行过程中的一个特定点,如方法调用、构造函数执行等。 4. **切入点(Pointcut)**:定义了一个或者一组通知何时何时何地应该执行,它是通知执行的条件。Spring的切入点表达式语法允许灵活匹配各种连接点。 5. **代理(Proxy)**:Spring使用动态代理技术创建目标对象的代理,代理对象在执行实际业务方法之前会调用通知代码,实现切面功能。 6. **@Aspect注解**:用于标记一个类为切面,这个类包含一个或多个通知方法。 7. **@AspectJ注解**:除了基于XML配置外,Spring还支持使用AspectJ语言编写切面,提供更丰富的语法和更多的元编程能力。 相关问题: 1. Spring AOP如何与Spring IoC容器集成? 2. 如何在Spring中声明一个切面和通知? 3. 在什么情况下我们会使用Spring的AspectJ而不是基于XML的配置方式?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++业余爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值