Spring的AOP开发

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kaizuidebanli/article/details/83052588

一、AOP的相关术语

在这里插入图片描述

二、AOP的入门开发

我们要增强的类

public class ProductDao {

    public void save(){
        System.out.println("ProductDao save ...........................");
    }
}

IOC配置

<?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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <context:component-scan base-package="dao.impl, service" />

	<!-- 配置目标对象:被增强的对象-->
    <bean id="productDao" class="dao.ProductDao"></bean>
    
</beans>

(1)创建切面类

public class MyAspectXML {

    public void checkPri(){
        System.out.println("checkPri........................");
    }
}

(2)将切面类交给spring进行管理

<?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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <context:component-scan base-package="dao.impl, service" />


    <bean id="productDao" class="dao.ProductDao"></bean>

    <bean id="myAspectXML" class="service.MyAspectXML"></bean>

    <!--通过AOP的配置完成对目标类产生代理-->
    <aop:config>

        <!-- 表达式配置哪些类的哪些方法需要进行增强 -->
        <aop:pointcut id="pointcut1" expression="execution(* dao.ProductDao.save(..))"/>
        
        <!--配置切面-->
        <aop:aspect ref="myAspectXML">
            <aop:before method="checkPri" pointcut-ref="pointcut1"/>
        </aop:aspect>
    </aop:config>
</beans>

(3)测试

package service; 

import dao.ProductDao;
import org.junit.Test;
import org.junit.Before; 
import org.junit.After;
import org.junit.runner.RunWith;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;

/** 
* ProductService Tester. 
* 
* @author chengruru 
* @since 10/14/2018 
* @version 1.0 
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
public class ProductServiceTest {
    @Resource(name = "productDao")
    private ProductDao productService;
    /** 
     * 
     * Method: save() 
     * 
     */ 
    @Test
    public void testSave() throws Exception {
    
        productService.save();
    }  
} 

结果显示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kaizuidebanli/article/details/83052588