创建spring的配置文件并导入约束

此处要导入aop的约束

<?xml version="1.0" encoding="UTF-8"?>
  <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">
  </beans>

在pom.xml中添加依赖

以下添加的依赖用于解析切入点表达式

<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.7</version>
</dependency>

spring中基于XML的AOP配置步骤

1. 配置srping的Ioc

2. 把通知bean也交给Spring来管理

<!-- 配置Logger类 -->
<bean id="logger" class="com.itheima.utils.Logger"></bean>

3. 使用aop:config标签表明开始AOP的配置

4. 使用aop:aspect标签表明配置切面

  id属性: 给切面提供一个唯一标识

  ref属性: 指定通知类bean的id

5. 在aop:aspect标签的内部使用对应标签来配置通知的类型

并且建立通知方法和切入点方法的关联

  method属性: 用于指定通知类中,哪个方法是对应的通知

  pointcut属性: 用于指定切入点表达式,该表达式的含义指的是对业务层中哪些方法增强

切入点表达式的写法:

  关键字: execution(表达式)

  标准的表达式:

    访问修饰符   返回值    包名.包名.包名...类名.方法名(参数列表)

    public void com.itheima.service.impl.AccountServiceImpl.saveAccount()

  访问修饰符可以省略

  返回值可以使用通配符,表示任意返回值

    * com.itheima.service.impl.AccountServiceImpl.saveAccount()

  包名可以使用通配符表示任意包   但是有几级包, 就需要写几个*.

.    * *.*.*.*.AccountServiceImpl.saveAccount()

  包名可以使用  ..  表示当前包及其子包  

    * *..AccountServiceImpl.saveAccount()

  类名和方法名都可以使用* 进行通配

    * *..*.*()     此时方法中有参数的不会进行增强

  参数列表

    可以直接写数据类型:

      基本类型直接写名称     int

      引用类型写包名.类名的方式    java.lang.String

    可以使用通配符表示任意类型, 但是必须有参数(有参数的才会进行增强)

      * *..*.*(*)

    可以使用..表示有无参数均可,有参数可以是任意类型

  全通配写法

    * *..*.*(..)

  实际开发中切入点表达式的通常写法: 

    切到业务层实现类下的所有方法

      * com.itheima.service.impl.*.*(..)

实例:

<!--配置AOP-->
<aop:config>
<!--配置切面 -->
<aop:aspect id="logAdvice" ref="logger">
<!-- 配置通知的类型,并且建立通知方法和切入点方法的关联-->
<aop:before method="printLog" pointcut="execution(* com.itheima.service.impl.*.*(..))"></aop:before>
</aop:aspect>
</aop:config>

基于XML的AOP配置的更多相关文章

  1. spring的基于xml的AOP配置案例和切入点表达式的一些写法

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...

  2. 基于 XML 的 AOP 配置(1)

    本文连接:https://www.cnblogs.com/qzhc/p/11969734.html 接下来我将用一个很简单的实例 1. 环境搭建 1.1. 第一步:准备必要的代码 业务层代码: Acc ...

  3. 基于XML的AOP配置(2)-环绕通知

    配置方式: <aop:config> <aop:pointcut expression="execution(* com.itheima.service.impl.*.*( ...

  4. 基于XML的AOP配置-转

    http://www.cnblogs.com/yangy608/archive/2010/11/14/1876839.html AOP(Aspect-Oriented Programming,面向切面 ...

  5. Spring中AOP的基于xml开发和配置

    pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...

  6. Spring中基于xml的AOP

    1.Aop 全程是Aspect Oriented Programming 即面向切面编程,通过预编译方式和运行期动态代理实现程序功能的同一维护的一种技术.Aop是oop的延续,是软件开发中的 一个热点 ...

  7. Spring 框架的概述以及Spring中基于XML的IOC配置

    Spring 框架的概述以及Spring中基于XML的IOC配置 一.简介 Spring的两大核心:IOC(DI)与AOP,IOC是反转控制,DI依赖注入 特点:轻量级.依赖注入.面向切面编程.容器. ...

  8. 01Spring基于xml的IOC配置--入门

    01Spring基于xml的IOC配置 1.创建一个普通的maven工程 1.1 选择maven,不用骨架,点击下一步. 1.2 填写GroupId.ArtifactId.Version.填完点击下一 ...

  9. 面向切面编程AOP:基于XML文件的配置

    除了使用AspectJ注解声明切面,Spring也支持在bean的配置文件中声明切面,这种声明是通过aop scheme中的XML元素完成的. 首先建立一个类: package com.sevenhu ...

随机推荐

  1. python第五篇:Linux上将txt导入mysql

    昨天写小项目的时候遇到了一个需求:把txt文档的数据导入到mysql数据库中,开始本来想直接用Mysql Workbench导入TXT文件,但是最后发现不支持TXT导入,结果我吧嗒吧嗒的去把TXT转了 ...

  2. Codeforces 900D Unusual Sequences:记忆化搜索

    题目链接:http://codeforces.com/problemset/problem/900/D 题意: 给定x,y,问你有多少个数列a满足gcd(a[i]) = x 且 ∑(a[i]) = y ...

  3. php数据结构课程---4、栈(是什么)

    php数据结构课程---4.栈(是什么) 一.总结 一句话总结: 栈(stack),它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算. 1.栈的链表实现? 定义node,设置属性d ...

  4. algorithm 简单用法

    algorithm 简单用法 #include <iostream> #include <vector> #include <algorithm> using na ...

  5. UI层自动化测试介绍

    UI指的是用户可以用肉眼可以看到的页面. UI层自动化测试的原理.不论是web端还是移动端,原理都是一样的,就是基于页面元素的识别和定位来进行模拟用户行为. 首先识别到某个元素,比如一个按钮,然后定义 ...

  6. FJOI2016 神秘数

    题目大意 给定长为$N$一个序列,每次询问一个区间,求最小的不能表示为由区间内若干个(可以是$0$个)数的和的非负整数. 考虑一个可重集合$S$,设抽取$S$中若干个数相加无法得到的最小非负整数为$A ...

  7. git导入项目

    远程仓库已经存在,使用的是gitblit,作为终端eclipse如何从中拷贝代码呢? 0.准备工作,windows->preference->team->git->config ...

  8. POJ1442:Black Box

    浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 题目传送门:http://poj.org/problem?id=1442 用对顶堆维护第\(k\)小 ...

  9. BZOJ1012:[JSOI2008]最大数

    浅谈栈:https://www.cnblogs.com/AKMer/p/10278222.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id ...

  10. 查看,上传crushmap命令

    标签(空格分隔): ceph,ceph运维,crushmap 查看crushmap命令 从mon节点获取crushmap: # ceph osd getcrushmap -o crush.map 反编 ...