使用xml形式配置springAOP前置增强 快速入门

 aop就是在目标方法执行期间,动态的插入其他一些方法执行。如前置增强、后置、抛出异常等多个场景
 优势:减少重复代码,提高开发效率,并且便于维护
 重点在于配置文件的编写,配置织入关系:告诉spring框架 哪些方法(切点)需要进行哪些增强(前置、后置...)

配置文件:aop:config

<?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
">
  
    <!--目标对象-->
    <bean id="target" class="com.itheima.aop.Target"></bean>

    <!--切面对象-->
    <bean id="myAspect" class="com.itheima.aop.MyAspect"></bean>

    <!--配置织入:告诉spring框架 哪些方法(切点)需要进行哪些增强(前置、后置...)-->
    <aop:config>
        <!--引用myAspect的Bean为切面对象-->
        <aop:aspect ref="myAspect">
            <!--配置Target的method方法执行时要进行myAspect的before方法前置增强-->
            <!--人话就是在执行method方法前,myAspect类中的before方法会提前先执行,就是前置增强-->
            <aop:before method="before" 
            		pointcut="execution(public void com.itheima.aop.Target.save())"/>
        </aop:aspect>
    </aop:config>
</beans>

接口:

package com.itheima.aop;
public interface TargetInterface {
    public void save();
}

实现类 - 关注切入点

package com.itheima.aop;

public class Target implements TargetInterface {
    public void save() {
        System.out.println("2、xx"); 
    }
}

增强

package com.itheima.aop;
import org.aspectj.lang.ProceedingJoinPoint;
public class MyAspect {
    public void before(){
        System.out.println("1、前置增强..........");
    }

测试:

package com.itheima.test;

import com.itheima.aop.TargetInterface;
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;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class AopTest {
    @Autowired
    private TargetInterface target;
    @Test //在此方法执行前,xml中匹配值的增强会提前执行
    //输出结果为
    /// 1、前置增强..........
    //	2、xx
    public void test1(){
        target.save();
    }
}

你可能感兴趣的:(spring,JAVA,aop,spring,入门)