1.AOP术语

1. Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点
2. Pointcut(切入点):所谓切入点是指我们要对哪些Joinpoint进行拦截的定义
3. Advice(通知/增强):所谓通知是指拦截到Joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)
4. Introduction(引介):引介是一种特殊的通知在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或Field
5. Target(目标对象):代理的目标对象
6. Weaving(织入):是指把增强应用到目标对象来创建新的代理对象的过程
7. Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类
8. Aspect(切面):是切入点和通知的结合,以后咱们自己来编写和配置的

2.AOP基于AspectJ的XML方式简单实现

1.引入jar包

sprig框架基础包+JUntil整合包+日志包+AOP包

spring的传统AOP的开发的包

  spring-aop-4.2.4.RELEASE.jar

  com.springsource.org.aopalliance-1.0.0.jar

aspectJ的开发包

  com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

  spring-aspects-4.2.4.RELEASE.jar

2.引入配置文件(AOP约束)

<beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

</bean>

3.创建实现类

public interface UserService {

    public void save();

    public void update();
}
public class UserServiceImpl implements UserService {

    @Override
    public void save() {
        // TODO Auto-generated method stub
        System.out.println("保存用户..");

    }

    @Override
    public void update() {
        // TODO Auto-generated method stub
        System.out.println("更新用户..");
    }

}

4.将实现类托管于Spring

    <!-- 实现类 -->
    <bean id="userService" class="com.spring.demo1.UserServiceImpl"/>     

5.定义切面类

public class LogImpl {

    public void log(){
        System.out.println("记录日志....");
    }
}

6.将切面类托管于Spring

    <!-- 切面类 -->
    <bean id="logImpl" class="com.spring.demo1.LogImpl"/>

7.在配置文件中完成AOP配置

    <!-- 配置AOP -->
    <aop:config>
        <!-- 配置切面类:切入点 和 通知 -->
        <aop:aspect ref="logImpl">
            <aop:before method="log" pointcut="execution(public void com.spring.demo1.UserServiceImpl.save())"/>
        </aop:aspect>

    </aop:config>

8.编写测试代码

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Test1 {

    @Resource(name="userService")
    private UserService userService;

    @Test
    public void m01(){
        userService.save();
        userService.update();
    }

}

效果:

6.Spring【AOP】XML方式的更多相关文章

  1. Spring AOP配置方式

    AOP 面向切面编程,允许在 java 应用中的方法调用的前后做一些处理. 本文通过实例介绍两种主要的Spring AOP 配置方式:xml 方式配置,注解方式配置 XML 方式配置 1. 项目包类结 ...

  2. spring aop注解方式与xml方式配置

    注解方式 applicationContext.xml 加入下面配置 <!--Spring Aop 启用自动代理注解 --> <aop:aspectj-autoproxy proxy ...

  3. spring 5.x 系列第3篇 —— spring AOP (xml配置方式)

    文章目录 一.说明 1.1 项目结构说明 1.2 依赖说明 二.spring aop 2.1 创建待切入接口及其实现类 2.2 创建自定义切面类 2.3 配置切面 2.4 测试切面 附: 关于切面表达 ...

  4. (转)Spring AOP实现方式(转)

    我们可以通过三种方式来使用Spring AOP,它们分别是:@Aspect-based(Annotation),Schema-based(XML),以及底层的Spring AOP API 底层的Spr ...

  5. Spring AOP实现方式四之注入式AspectJ切面【附源码】

    现在我们要讲的是第四种AOP实现之注入式AspectJ切面 通过简单的配置就可以实现AOP了. 源码结构: 1.首先我们新建一个接口,love 谈恋爱接口. package com.spring.ao ...

  6. Spring AOP实现方式三之自动扫描注入【附源码】

    注解AOP实现  这里唯一不同的就是application 里面 不需要配置每个bean都需要配置了,直接自动扫描 注册,主要知识点是怎么通过配置文件得到bean, 注意类前面的@注解. 源码结构: ...

  7. Spring AOP实现方式三【附源码】

    注解AOP实现 源码结构: 1.首先我们新建一个接口,love 谈恋爱接口. package com.spring.aop; /** * 谈恋爱接口 * * @author Administrator ...

  8. Spring AOP实现方式二【附源码】

    自动代理模式[和我们说的方式一 配置 和 测试调用不一样哦~~~]  纯POJO切面 源码结构: 1.首先我们新建一个接口,love 谈恋爱接口. package com.spring.aop; /* ...

  9. Spring Aop实现方式总结

    前面两个文章介绍了Aop及其相关重要概念,下面主要用代码的方式介绍下实现Spring Aop的几种方式 1. 基于注解实现Spring Aop 业务类接口 package cn.test.busine ...

  10. java中代理,静态代理,动态代理以及spring aop代理方式,实现原理统一汇总

    若代理类在程序运行前就已经存在,那么这种代理方式被成为 静态代理 ,这种情况下的代理类通常都是我们在Java代码中定义的. 通常情况下, 静态代理中的代理类和委托类会实现同一接口或是派生自相同的父类. ...

随机推荐

  1. java反射快速入门

    笔记记在了掘金,发现掘金的markdown编辑器比博客园样式要好看不少 https://juejin.im/post/5d4e575af265da03e4674e9f

  2. 在.net core上,Web网站调用微信支付-统一下单接口(xml传参)一直返回错误:mch_id参数格式错误

    这是 微信支付-统一下单 接口文档 一.问题描述 在调用统一下单接口时,报mch_id参数格式错误,但商户ID确实是10位数字正确的,可就是一直报这个错误 返回的错误xml如下: 二.排错过程 1.多 ...

  3. VS2010-MFC(常用控件:标签控件Tab Control 下)

    转自:http://www.jizhuomi.com/software/207.html 上一节讲了标签控件知识的上半部分,本节继续讲下半部分. 标签控件的创建 MFC为标签控件的操作提供了CTabC ...

  4. 固定定位fixed,绝对定位absolute,相对定位relative;以及overflow

    固定定位position:fixed /*固定定位 1.定位属性值:fixed 2.在页面中不再占位(浮起来了) 3.一旦定位后,定位的布局方位 top.bottom.left.right都能参与布局 ...

  5. Delphi编写后台监控软件

    Delphi编写后台监控软件         文章来源:Delphi程序员之家     后台监控软件,为了达到隐蔽监控的目的,应该满足正常运行时,不显示在任务栏上,在按Ctrl+Alt+Del出现的任 ...

  6. Docker系列(五):Docker网络机制(上)

    Linux路由机制打通网络 路由机制是效率最好的 docker128上修改Docker0的网络地址,与docker130不冲突 vi /usr/lib/systemd/system/docker.se ...

  7. Bzoj 1036 树的统计 分类: ACM TYPE 2014-12-29 18:55 72人阅读 评论(0) 收藏

    Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...

  8. C 遍历目录及其子目录

    遍历某一目录,获取该目录下所有文件路径的数组 #include <iostream> #include <dirent.h> #include <vector> v ...

  9. Activiti学习笔记2 — HelloWorld

    一. Maven的POM配置文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt ...

  10. Python基础知识之4——三大控制结构

    控制结构就是控制程序执行顺序的结构. Python 有三大控制结构,分别是顺序结构.分支结构(选择结构)以及循环结构.任何一个项目或者算法都可以使用这三种结构来设计完成.这三种控制结构也是结构化程序 ...