Spring中的AOP

一、概述

(一)基本概念
1、什么是AOP?
    面向方面编程。所谓方面即是指日志、权限、异常处理、事务处理等。
2、AOP的3个关键概念
   (1)切入点(Pointcut):Pointcut是Join Point的集合,Join Point就是需要注入Adivce的位置,也就是需要插入日志输出代码、事务处理代码等“方面”(Aspect,也就是AOP中的A)代码的地方。
    比如我现在要写一个存钱的方法:saving()
    通常情况下我就得在这个saving()方法前后写些事务代码
    如:
 
          logger.log(Level.INFO,”start”);
Saving();
                         logger.log(Level.INFO,”end”);
      
         对于事务代码而言,saving()方法的前后就都是Join Point了。在Spring中它对应config.xml中设定的方法,这个方法就是类(class)中需要进行某方面处理的方法(method)。
        (2)通知(Advice):就是指Join Point对应的代码(方法)。比如日志输出这个方面,指的就是日志输出的代码或方法了。在Spring中,它对应类(class)。
        (3)Advisor是Poincut和Advice的配置器,它包括Pointcut和Advice,是将Advice注入程序中Pointcut位置的代码。在Sping中,它对应config.xml中的配置段<bean id=logAdvisor class=”org.springframework.aop.support.RegexpMethodPointcutAdvisor”>

二、实例讲解

首先我们先看这个例子

切面(可以是日志、安全性的检查、权限、事务)等工作,这些就叫做切面。。。。



切面中的方法是什么呢?---切面中的方法是通知


织入:
连接点:客户端调用那个方法,那个方法就是连接点。
aop的最本质的作用:代码块的重用。
问题来了--那如果我们有n个切面,就是开发的时候分配任务,你写你的,我写我的,最后在使用所有的切面即可,我们该怎样调用呢?
这是个最全的方法名称,实际上是来限定一个方法的
1
2
3
4
5
6
7
8
9
10
11
12
13
配置如下:
 
<aop:config>
 
    <aop:aspect id="security" ref="securityHandler">
 
        <aop:pointcut id="allAddMethod" expression="execution(* com.lsb.spring.UserManagerImpl.add*(..))"/>
 
        <aop:before method="checkSecurity" pointcut-ref="allAddMethod" />
 
    </aop:aspect>
 
    </aop:config>



Spring自学教程-AOP学习(五)的更多相关文章

  1. Spring IOC及AOP学习总结

    一.Spring IOC体系学习总结: Spring中有两个容器体系,一类是BeanFactory.还有一类是ApplicationContext.BeanFactory提供了基础的容器功能.Appl ...

  2. Spring自学教程-IOC、DI、AOP(二)

    一.spring的IOC-就是怎样使用spring来创建对象 二.springDI(依赖注入)-就是怎样给属性赋值 通过set方式赋值 以下我们只需要记住两点的赋值,基本类型和引用类型的赋值 基本类型 ...

  3. Spring AOP 学习(五)

    1. 使用动态代理实现AOP package com.atguigu.spring.aop; import java.lang.reflect.InvocationHandler; import ja ...

  4. Spring自学教程-声明式事务处理(六)

    Spring事务处理分两种: 一.编程式事务:在程序中控制事务开始,执行和提交: 1.1 使用TransactionTemplate, 使用回调函数执行事务,不需要显示开始事务,不需要显示提交事务,但 ...

  5. Spring中的AOP(五)——定义切入点和切入点指示符

    定义切入点 在前文(点击查看)中使用到的AdviceTest类中同一个切点(即* com.abc.service.*.advice*(..)匹配的连接点)却重复定义了多次,这显然不符合软件设计的原则, ...

  6. Spring security 和 AOP 学习

    1.Spring security 登录验证拦截器 资源管理拦截器 认证和授权:      认证:登录时候确实存在此用户. 登录要认证!      授权:登录后判断权限级别,然后赋予相应的操作权限. ...

  7. Spring自学教程-ssh整合(六)

    以下是本人原创,如若转载和使用请注明转载地址.本博客信息切勿用于商业,可以个人使用,若喜欢我的博客,请关注我,谢谢!博客地址 感谢您支持我的博客,我的动力是您的支持和关注!如若转载和使用请注明转载地址 ...

  8. Spring自学教程-jabc编程详解、RowMapper使用(三)

    一.JDBC 1.JDBC的编程特点 静态代码+动态变量 = jdbc编程.在spring中动态变量可以用注入的形式给予.这样的编程方式适合包装成模板.静态代码构成了模板,而动态变量则是需要传入的参数 ...

  9. Spring自学教程-注解的使用(三)

    一.java中的注解 定义注解 下面是一个定义注解的实例. @Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documente ...

随机推荐

  1. 【jsp网站计数功能】 application session

    在jsp页面中实现网站计数器的方法有很多,其中比较普遍的做法是利用application 和session对象.application对象可被所有用户共享:session是单用户共享,用户从访问系统开 ...

  2. table边框设置

    一.表格的常用属性基本属性有:width(宽度).height(高度).border(边框值).cellspacing(表格的内宽,即表格与tr之间的间隔). cellpadding(表格内元素的间隔 ...

  3. Form表单的post 和get跳转区别

    post是隐示请求 ----- 安全 get显示请求不安全,会在URL上显示路径和参数

  4. PHP上传图片三个步骤详细分析

    学习PHP时,你可能会遇到PHP上传图片问题,这里将介绍PHP上传图片问题的解决方法,在这里拿出来和大家分享一下.今天我们就开始一起学习PHP上传图片.上传图片原理:首先判断文件类型是否为图片格式,若 ...

  5. [转]程序开发基础学习二(C++ Google Style 命名规则)

    无规矩不成方圆,新的岗位就需要服从团队的编码规则.很开心团队用的是Google的C++编码规则,大概看了下Google 的编码规则,正如九天翔雁说的:“Google的 C++ Style Guide远 ...

  6. Lucene4.X 高级应用

    Lucene 简介以及使用 Lucene, 一个基于 Java 的开源的全文搜索工具包,可以方便的嵌入到各种应用系统中,实现针对应用的全文索引以及检索功能.目前是 Apache  jakarta 项目 ...

  7. hdu 3342 Legal or Not(拓扑排序)

    Legal or Not Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total ...

  8. Mesos架构

    Mesos Architecture 上图显示了 Mesos 的主要组成部分. Mesos 由一个 master daemon 来管理 slave daemon 在每个集群节点上的运行, mesos ...

  9. Java学习之位运算符

    位运算符:&,|,^,~,<<,>> & (按位与):只有对应的两个二进制位均为1时,结果才为1.例如,9&5,即00001001&000001 ...

  10. 【抽屉定理】 组合数学poj2356

    假定n个数为a1,a2,...,an,前n项和分别是S1.S2.....Sn,那么如果有一个Si模n是0,就是答案,否则,n个数模n的余数只能在 1到n - 1之间,把余数作为抽屉,显然n个数放到n ...