Spring AOP和IOC

一、IOC

Spring的核心机制是依赖注入(Dependency Inversion),也称为控制反转(IOC)。所谓依赖注入,就是指运行工程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖外部的注入。

依赖注入通常有两种:设置注入与构造注入。

通过set方法来为目标Bean注入属性的方法称为设置注入。

利用构造函数来设置依赖注入的方式称为构造注入。

二、AOP

AOP意味面向切面编程,是通过预编译方式和运行期动态代理,实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。

①方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的 Advisor或拦截器实现。

②连接点(Joinpoint): 程序执行过程中明确的点,如方法的调用或特定的异常被抛出。

通知(Advice): 在特定的连接点,AOP框架执行的动作。各种类型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多AOP框架包括Spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器链。Spring中定义了四个advice: BeforeAdvice, AfterAdvice, ThrowAdvice和DynamicIntroductionAdvic

③切入点(Pointcut): 指定一个通知将被引发的一系列连接点的集合。AOP框架必须允许开发者指定切入点:例如,使用正则表达式。 Spring定义了Pointcut接口,用来组合MethodMatcher和ClassFilter,可以通过名字很清楚的理解, MethodMatcher是用来检查目标类的方法是否可以被应用此通知,而ClassFilter是用来检查Pointcut是否应该应用到目标类上

④引入(Introduction): 添加方法或字段到被通知的类。 Spring允许引入新的接口到任何被通知的对象。例如,你可以使用一个引入使任何对象实现 IsModified接口,来简化缓存。Spring中要使用Introduction, 可有通过DelegatingIntroductionInterceptor来实现通知,通过DefaultIntroductionAdvisor来配置Advice和代理类要实现的接口

⑤目标对象(Target Object): 包含连接点的对象。也被称作被通知或被代理对象。POJO

AOP代理(AOP Proxy): AOP框架创建的对象,包含通知。 在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。

⑥织入(Weaving): 组装方面来创建一个被通知对象。这可以在编译时完成(例如使用AspectJ编译器),也可以在运行时完成。Spring和其他纯Java AOP框架一样,在运行时完成织入。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux驱动个人学习

Linux RCU 机制详解

1、简介: RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用。 RCU主要针对的数据对象是链表,目的是提...

54440
来自专栏coderhuo

虚拟内存探究 -- 第四篇:malloc, heap & the program break

这是虚拟内存系列文章的第四篇,也是最后一篇。 本文主要介绍malloc和heap相关知识,以便回答上一篇文章结尾提出的一些问题:

23610
来自专栏Java编程技术

Spring事务切面原理

本节我们来谈谈 <tx:advice/>、<aop:config> 标签如何创建事务切面的。

31220
来自专栏林德熙的博客

win10 uwp 读写XML xml 语法XmlDocumentLinq 读写 XMLWPF 读XMLWPF 读写 xaml

UWP 对 读写 XML做了一些修改,但和之前 WPF 的方法没有大的区别。 我们先来说下什么是 XML , XML 其实是 树结构,可以表达复杂的结构,所以在...

21010
来自专栏阿杜的世界

实践基于Redis的分布式锁应用场景实现方式基于Redis的实践参考资料

本文来自社区这周的讨论话题—— 技术专题讨论第四期:漫谈分布式锁,也总结了我对分布式锁的认知和使用经验。

30830
来自专栏Java架构沉思录

Spring AOP失效之谜

AOP(Aspect Oriented Programming),即面向切面编程,其是OOP(Object Oriented Programming,面向对象编...

16920
来自专栏IT可乐

Spring详解(七)------AOP 注解

  上一篇博客我们讲解了 AspectJ 框架如何实现 AOP,然后具体的实现方式我们是通过 xml 来进行配置的。xml 方式思路清晰,便于理解,但是书写过于...

21370
来自专栏Seebug漏洞平台

Exim Off-by-one(CVE-2018-6789)漏洞复现分析

前段时间meh又挖了一个Exim的RCE漏洞[1],而且这次RCE的漏洞的约束更少了,就算开启了PIE仍然能被利用。虽然去年我研究过Exim,但是时间过去这么久...

57470
来自专栏pangguoming

spring boot 发送邮件

简单几步,实现在spring boot中发送邮件: 1、引入依赖: <dependency>   <groupId>org.springframework....

38380
来自专栏影子

springboot添加邮件发送及压缩功能

转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9190233.html

12010

扫码关注云+社区

领取腾讯云代金券