Spring AOP配置-xml

基于xml的spring AOP配置主要有几个步骤:

1、创建切面类

  编写自定义增强代码(如事务处理,日志等)

2、创建service

  提供连接点

3、配置切面

在配置之前,先了解一些专业术语

连接点:被拦截的方法

切入点:拦截规则(符合规则被拦截的一类方法)

通知/增强:对拦截的方法添加自定义功能

切面:就是切面类,在其中自定义通知

编写切面类

//切面类
public class AspectClazz {
    public void save() {
        System.out.println("保存");
    }

}

编写业务层代码

package my.service;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import my.pojo.Student;
@RunWith(value=SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:applicationContext.xml")
public class StudentService {
    @Autowired
    private Student student;
    @Test
    public void test() {
        System.out.println(student.getName());

    }
}

在spring配置文件中配置

1、配置切面类

<!--配置切面类  -->
    <bean name="aspectClazz" class="my.util.AspectClazz"></bean>

2、配置切面

<!-- 配置切面 -->
    <aop:config>
    <!--配置连接点  -->
        <aop:pointcut expression="execution(* my..*.*(..))" id="pc"/>
        <!--配置切面  -->
        <aop:aspect ref="aspectClazz">
            <aop:before method="save" pointcut-ref="pc"/>
        </aop:aspect>

    </aop:config>

注意配置拦截点需要设定拦截规则,

表达式语法:execution([修饰符] 返回值类型 包名.类名.方法名(参数))

写法说明:

全匹配方式:

public void cn.zj.service.impl.CustomerServiceImpl.saveCustomer()

访问修饰符可以省略

void com.zj.service.impl.CustomerServiceImpl.saveCustomer()

返回值可以使用*号,表示任意返回值

* com.zj.service.impl.CustomerServiceImpl.saveCustomer()

包名可以使用*号,表示任意包,但是有几级包,需要写几个*

* *.*.*.*.CustomerServiceImpl.saveCustomer()

使用..来表示当前包,及其子包

* com..CustomerServiceImpl.saveCustomer()

类名可以使用*号,表示任意类

* com..*.saveCustomer()

方法名可以使用*号,表示任意方法

* com..*.*()

参数列表可以使用*,表示参数可以是任意数据类型,但是必须有参数

* com..*.*(*)

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

* com..*.*(..)

全通配方式:

* *..*.*(..)

原文地址:https://www.cnblogs.com/cdeelen/p/11000213.html

时间: 2024-09-29 02:33:28

Spring AOP配置-xml的相关文章

12.Spring AOP配置与应用

两种方式: a)     使用Annotation b)     使用xml Annotation a)     加上对应的xsd文件spring-aop.xsd b)     beans.xml <aop:aspectj-autoproxy /> c)     此时就可以解析对应的Annotation了 d)     建立我们的拦截类 e)     用@Aspect注解这个类 f)      建立处理方法 g)     用@Before来注解方法 h)     写明白切入点(executio

Spring AOP配置中的问题aop:aspectj-autoproxy

(1)对于菜鸟来说,在Spring学习中可能会遇到各种各样的问题.下面就简单的写一下,我在学习Spring AOP配置中遇到的问题吧. 一般情况下,很多人都认为我们把spring framework中的所有jar包都加入到classpath中就OK了,在学习Ioc和Aop的时候就只剩下编程了,啥都不用管了. 其实不是这样的,对于以前的版本来说,可能所有用到的包都集成在一起了,但spring 技术的不断发展和扩大.完善.最终,好多模块都分家了,比如,在学习Ioc的时候我们基本上可以使用spring

菜鸟学习Spring——60s配置XML方法实现简单AOP

一.概述. 上一篇博客讲述了用注解的形式实现AOP如今讲述第二种AOP实现的方式利用XML来实现AOP. 二.代码演示. 准备工作參照上一篇博客<菜鸟学习Spring--60s使用annotation实现简单AOP> 文件夹结构: 事实上比起上一篇博客中用annotation来实现AOP的方式我们仅仅要把SecurityHandler.java和配置文件applicationContext.xml更改为以下内容就能够了.以下我把这两个文件的代码写下来. SecurityHandler.java

spring aop配置

注解方式 applicationContext.xml 加入下面配置 <!--Spring Aop 启用自动代理注解 --> <aop:aspectj-autoproxy proxy-target-class="true"/> LoggingAspect,java package com.lingdong.spring.aop; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotati

Spring AOP 在XML中声明切面

转载地址:http://www.jianshu.com/p/43a0bc21805f 在XML中将一个Java类配置成一个切面: AOP元素 用途 <aop:advisor> 定义AOP通知器 <aop:after> 定义一个后置通知(不管目标方法是否执行成功) <aop:after-returning> 定义AOP返回通知 <aop:after-throwing> 定义AOP异常通知 <aop:around> 定义环绕通知 <aop:as

spring aop 配置切面,记录系统异常存入log日志

1.spring.xml(这里主要配置了抛出异常后的操作after-throwing) 需要注意的地方以黄色标注,主要是几个切入点bean配置 <!-- 激活自动代理功能 --> <aop:aspectj-autoproxy proxy-target-class="true"/> <!-- 系统服务组件的切面Bean --> <bean id="aspectService" class="com.test.http

Java--简单的Spring AOP配置以及AOP事物管理,JDK/GCLib动态代理

一.看一下简单的通过XML的AOP配置 1.首先创建一个简单的Student类 public class Student { private Integer age; private String name; public void setAge(Integer age) { this.age = age; } public Integer getAge() { System.out.println("Age : " + age); return age; } public void

spring aop的xml设置

1.aop可以在不更改代码的情况下,在代码执行前后增加方法.可以方便的提高效率. 例如在查看方法性能时.追加日志.增加权限等 测试类 package springdemo.demo4; import org.springframework.stereotype.Component; public class studentDao { public void save(){ System.out.println("保存"); } void update(){ System.out.pri

Spring AOP基于xml配置实例

目录层级: AOP相关的几个类就是com.aop.xmltype这个报下的4个类. ICalculatorxml.java package com.aop.xmltype; /** * 加减乘除接口,用于AOP测试 * * @author Wei * */ public interface ICalculatorxml { /** * 加法 * * @param a * @param b * @return a+b */ public int doAdd(int a, int b); /** *