zoukankan      html  css  js  c++  java
  • Spring之二:Spring AOP概述

    一、AOP概念回顾

      AOP是Aspect-Oriented Programming(面向方面编程)的简称,

    虽然可以利用面向对象的方法可以很好地组织代码,也可以通过继承关系实现代码重用,但是程序中总是会出现一些重复的代码,而且不太方便使用继承的方法把它们重用和管理起来。它们的功能重复并且需要作用在不同的地方,虽然可以对这些代码做一些简单的封装,使之成为一些公共函数,但是在这种显示的调用中,使用它们并不是很方便。

    在使用AOP后,不仅可以将这些重复的代码抽取出来单独维护,比起传统手段中,直接调用公用模块之外,通过AOP提出横切的概念,把模块功能证交化的同时,也在此基础上提供了一系列横切的灵活实现。

    AOP联盟的网站上提到了以下的AOP技术:

    • AspectJ:源代码和字节码基本的编织器,用户需要使用不同于java的新语言。
    • AspectWerkz:AOP框架,使用字节码动态编织和XML配置。
    • JBoss-AOP:基于拦截器和元数据的AOP框架,运行在JBoss应用服务器上。
    •  BCEL(Byte-Code Engineering Library):Java字节码操作类库
    • Javassist:java字节码操作类库;

     对应于现有的AOP实现方案,AOP联盟对它们进行了一定程度的抽象,从而定义出AOP体系结构,结合这个体系结构去了解AOP技术,对我们理解AOP的概念是非常有帮助的,这个AOP体系结构如下:

      在Spring AOP中,是使用java语言来实现增强对象与切面增强应用的,并为这两者的结合提供了配置环境。

    • 对于编织配置,可以使用IoC容器来完成。
    • 对于POJO对象的配置,本来就是Spring的核心IoC容器的强项。

    因此,对于使用Spring的AOP开发而言,使用POJO就能完成AOP任务。

    但是,对于其他的AOP实现方案,可能需要使用特定的实现语言、配置环境甚至是特定的编译环境。

  • 相关阅读:
    LeetCode 137. Single Number II
    LeetCode 16. 3Sum Closest
    LeetCode 18. 4Sum
    LeetCode 15. 3Sum
    LeetCode 166. Fraction to Recurring Decimal
    LeetCode Anagrams
    Java: Difference between ArrayList and LinkedList
    LeetCode 242. Valid Anagram
    LeetCode 204. Count Primes
    Java Class Variable/Static Variable
  • 原文地址:https://www.cnblogs.com/duanxz/p/3756547.html
Copyright © 2011-2022 走看看