许多AOP框架,比较常用的是Spring AOP 与AspectJ。这里主要学习的Spring AOP。

关于AOP

日志、事务、安全验证这些通用的、散步在系统各处的需要在实现业务逻辑时关注的事情称为“方面”,也可称为 关注点
AOP要做的事,就是从系统中分离出 方面 ,然后集中实现。从而独立地编写业务代码和方面代码,在系统运行时,再将方面“织入”到系统中。
这样好处是:
1、减少方面代码里的错误,处理策略改变时还能做到统一修改;
2、在编写业务逻辑时可以专心于核心业务;
 
AOP重要概念
 
切面:方面(日志、事务)的实现,如日志切面、权限切面等。通常是存放方面实现的普通java类,要被aop容器识别为切面,需要在配置中通过bean来标记指定。
通知:切面的具体实现。以目标方法为参照点。根据位置不同,可分前置、后置、异常、环绕、最终通知5种。切面类中的某个方法具体属于哪类通知,需要在配置中指定。
切入点:用于定义通知应该织入到哪些连接点上。
目标对象:将要织入切面的对象,即被通知的对象。这些对象只包含核心业务逻辑业务代码,所有日志、事务、安全验证等方面的功能等待AOP容器的织入。
代理对象:将通知应用到目标对象之后,被动态创建的对象。功能=目标对象中实现的核心业务逻辑功能+方面(日志、事务、安全验证)代码实现的功能。
织入:将切面应用到目标对象,从而创建一个新的代理对象的过程。
 

spring aop日志实现有基于代理类、基于schema、基于@AspectJ注解三种方式。其中前两类项目中配置文件比较复杂,注解方式配置比较简洁。

参考:Spring AOP 完成日志记录

配置文件中关于切入点的一个定义示例:

    <!-- 以AspectJ方式 定义 AOP -->
<aop:config proxy-target-class="true">
<aop:advisor pointcut="execution(public * cn.com.bs..*work..*Work*.*(..))"
advice-ref="txAdviceWork" />
</aop:config>

看看Spring官方文档的定义(正则匹配原则 如何区分包名、类名、方法名):

spring aop学习记录的更多相关文章

  1. AOP和spring AOP学习记录

    AOP基本概念的理解 面向切面AOP主要是在编译期或运行时,对程序进行织入,实现代理, 对原代码毫无侵入性,不破坏主要业务逻辑,减少程序的耦合度. 主要应用范围: 日志记录,性能统计,安全控制,事务处 ...

  2. Spring AOP 学习例子

    http://outofmemory.cn/code-snippet/3762/Spring-AOP-learn-example     工作忙,时间紧,不过事情再多,学习是必须的.记得以前的部门老大 ...

  3. Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客

    ==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...

  4. 我的Spring Boot学习记录(二):Tomcat Server以及Spring MVC的上下文问题

    Spring Boot版本: 2.0.0.RELEASE 这里需要引入依赖 spring-boot-starter-web 这里有可能有个人的误解,请抱着怀疑态度看. 建议: 感觉自己也会被绕晕,所以 ...

  5. 在Intellij上面导入项目 & AOP示例项目 & AspectJ学习 & Spring AoP学习

    为了学习这篇文章里面下载的代码:http://www.cnblogs.com/charlesblc/p/6083687.html 需要用Intellij导入一个已有工程.源文件原始内容也可见:link ...

  6. Spring AOP学习笔记01:AOP概述

    1. AOP概述 软件开发一直在寻求更加高效.更易维护甚至更易扩展的方式.为了提高开发效率,我们对开发使用的语言进行抽象,走过了从汇编时代到现在各种高级语言繁盛之时期:为了便于维护和扩展,我们对某些相 ...

  7. Spring AOP学习笔记03:AOP的核心实现之获取增强器

    上文讲了spring是如何开启AOP的,简单点说就是将AnnotationAwareAspectJAutoProxyCreator这个类注册到容器中,因为这个类最终实现了BeanPostProcess ...

  8. Spring AOP学习笔记05:AOP失效的罪因

    前面的文章中我们介绍了Spring AOP的简单使用,并从源码的角度学习了其底层的实现原理,有了这些基础之后,本文来讨论一下Spring AOP失效的问题,这个问题可能我们在平时工作中或多或少也会碰到 ...

  9. Spring AOP学习笔记02:如何开启AOP

    上文简要总结了一些AOP的基本概念,并在此基础上叙述了Spring AOP的基本原理,并且辅以一个简单例子帮助理解.从本文开始,我们要开始深入到源码层面来一探Spring AOP魔法的原理了. 要使用 ...

随机推荐

  1. MYSQL基本操作(下)

    好了,废话不多说,接着开始Mysql剩下部分的小结了 Mysql 之 基础下 事务 事务:一系列将要发生或正在发生的连续操作,旨在保证数据操作的完整性.在事务开启之后,所有的操作都会被临时存储到事务日 ...

  2. 【Linux基础】VI 编辑器基本使用方法

    vi编辑器是所有Unix及Linux系统下标准的编辑器.对Unix及Linux系统的任何版本,vi编辑器是完全相同的,它是Linux中最基本的文本编辑器. 第一章vi的三种模式 第二章vi文本编辑器 ...

  3. WPF调用zxing生成二维码

    1.登录http://zxingnet.codeplex.com/,下载对应.net版本的zxing库 2.引入zxing.dll 3.新建界面控件 using System; using Syste ...

  4. centos7下安装docker(22.docker swarm-----service)

    运行service 执行以下命令: docker service create --name web-server httpd 通过docker service ls查看swarm中的service ...

  5. socket编程解决粘包和丢包问题

    ##socket 丢包粘包解决方式 采用固定头部长度(一般为4个字节),包头保存的是包体的长度 header+body 包头+包体 下面的例子不是按照上图中规定的格式编写的,但是思路都是一样的,先读出 ...

  6. js 捕捉滚动条事件

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  7. python:利用configparser模块读写配置文件

    在自动化测试过程中,为了提高脚本的可读性和降低维护成本,将一些通用信息写入配置文件,将重复使用的方法写成公共模块进行封装,使用时候直接调用即可. 这篇博客,介绍下python中利用configpars ...

  8. 1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(视频总揽和功能演示)

    主要实现的功能 其它视频和资料稍候再补充上 我先写后面的文章 2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(安装数据库,数据库简单说明)

  9. 记一次Dubbo服务注册异常

            公司项目重构,把dubbo版本从2.5.8升级为2.6.2.升级后在本地运行一点问题都没有:可是通过公司自研的发布系统将项目发布到测试环境的linux服务器下面后,出现了dubbo服务 ...

  10. JavaEE学习之Spring Security3.x——模拟数据库实现用户,权限,资源的管理

    一.引言 因项目需要最近研究了下Spring Security3.x,并模拟数据库实现用户,权限,资源的管理. 二.准备 1.了解一些Spring MVC相关知识: 2.了解一些AOP相关知识: 3. ...