For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
一般来说,系统在处理进程上都的多线程一起进行的,但是在有些情况下会有先后关系,今天,我们就一起来了解一下关于进程处理的问题,下面就开始今天的主要内容吧。
AOP及spring AOP的使用
介绍
AOP是一种概念(思想),并没有设定具体语言的实现。
AOP是对oop的一种补充,不是取而代之。
具体思想:定义一个切面,在切面的纵向定义处理方法,处理完成之后,回到横向业务流。
特征
散布于应用中多处的功能被称为横切关注点
横切关注点可以被描述为影响应用多处的功能
切面提供了取代继承和委托的另一种可选方案
通过声明的方式定义这个功能要以何种方式在何处应用,而无需修改受影响的类
核心概念
连接点(join point)
就是程序执行的某个特定的点:
你的一个类里,有15个方法,那就有几十个连接点了
Spring仅支持方法的连接点
连接点就是为了让你好理解切点,搞出来的,明白这个概念就行了
切点(pointcut)
顾名思义切点就是切入哪些连接点,
切点是用来筛选连接点的,来定义都有哪些连接点需要被执行织入通知,
连接点相当于数据库中的记录,而切点相当于查询条件,
一个切点可以匹配出多个连接点
切点指明:都有哪些切点被切面选中了
通知(advice)
切面的工作内容被称为通知,主要是定义我们要做什么事情
比如:我们要记录每一个方法执行前后的时间日志,这个就是我们这个aop的切面工作内容,也就是通知
基于连接点的概念,我们必须要指定这些切点
一般spring的切点都是匹配到方法级别,不会直接定义到某个类某个方法的哪个点,
所以我们需要为这些切点指定在什么时候织入通知。
比如:我们的切点包括了10类的100个方法,那么我们不会为每一个类中的方法单独指定在哪个点(前,后,异常)执行通知,我们会采用统一规则,比如都指定为方法前。
方法前(before)
方法后(after)
方法前后(around)
跑出异常(Exception)
通知指明:做什么事情,在什么时机(统一切入点)执行
切面
通知和切点的结合
通知和切点共同定义了切面的全部内容——它是什么,在何时和何处完成其功能
引入
允许我们向现有的类添加新方法属性。这不就是把切面(也就是新方法属性:通知定义的)用到目标类中吗
织入
织入是把切面应用到目标对象并创建新的代理对象的过程
编译期:切面在目标类编译时被织入。这种方式需要特殊的编译器。AspectJ的织入编译器就是以这种方式织入切面的。
类加载期:切面在目标类加载到JVM时被织入。这种方式需要特殊的类加载器(ClassLoader),它可以在目标类被引入应用之前增
强该目标类的字节码。AspectJ 5的加载时织入(load-time weaving,LTW)就支持以这种方式织入切面。
运行期:切面在应用运行的某个时刻被织入。一般情况下,在织入切面时,AOP容器会为目标对象动态地创建一个代理对象。Spring
AOP就是以这种方式织入切面的。
作者:王森
来源:博客园
【免责声明】:本内容转载于网络,转载目的在于传递最新信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。