zoukankan      html  css  js  c++  java
  • Spring的AOP开发入门,Spring整合Junit单元测试(基于ASpectJ的XML方式)

    参考自 https://www.cnblogs.com/ltfxy/p/9882430.html

    创建web项目,引入jar包

    除了基本的6个Spring开发的jar包外,还要引入aop开发相关的四个jar包:

    附jar包链接:链接:https://pan.baidu.com/s/1E_8NA-DcWwt9hdK-czkm9A   提取码:xq8n

    除此之外,Spring要整合Junit单元测试的话,还需引入

    引入Spring配置文件

      引入aop开发的约束

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

    编写目标类与实现类,并完成配置

    package spring.day2_aop;
    
    public interface ProductDao {
        public void find();
        public void save();
        public void delete();
        public void update();
    }
    View Code
    package spring.day2_aop;
    
    public class ProductDaoImp implements ProductDao {
    
        @Override
        public void find() {
            System.out.println("查询商品。。。");
        }
    
        @Override
        public void save() {
            System.out.println("保存商品。。。");
    
        }
    
        @Override
        public void delete() {
            System.out.println("删除商品。。。");
    
        }
    
        @Override
        public void update() {
            System.out.println("修改商品。。。");
    
        }
    
    }
    View Code

    编写测试类

    package spring.day2_aop;
    
    import javax.annotation.Resource;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext4.xml")
    public class SpringDemo1 {
        
        @Resource(name="productDao")
        private ProductDao productDao;
        @Test
        public void demo1() {
            productDao.save();
            productDao.delete();
            productDao.update();
            productDao.find();
        }
    }

    运行结果如下:

    编写一个切面类并通过aop配置产生代理

    package spring.day2_aop;
    /*
     * 切面类:放入通知的方法即增强的那些方法
     */
    public class MyAspectXml {
        /*
         * 权限校验的方法
         */
        public void checkPri() {
            System.out.println("权限校验..............");
        }
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- ===============================引入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 id="productDao" class="spring.day2_aop.ProductDaoImp"></bean>
    
        <!-- 将切面类交给spring管理 -->
        <bean id="myAspect" class="spring.day2_aop.MyAspectXml"></bean>
    
        <!-- 通过aop的配置来对目标类产生代理 -->
        <aop:config>
            <!-- 配置切入点,表达式(execution函数)配置当前web项目下哪些类的哪些方法需要增强,*代表任意返回值,..代表任意参数 -->
            <aop:pointcut
                expression="execution(* spring.day2_aop.ProductDaoImp.save(..))"
                id="pointcut1" />
            <!-- 配置切面 -->
            <aop:aspect ref="myAspect">
                <!-- 配置为前置增强 -->
                <aop:before method="checkPri" pointcut-ref="pointcut1" />
            </aop:aspect>
        </aop:config>
    </beans>

    测试运行

    补充:

    @Runwith() :用于指定junit运行环境。它是junit提供给其他框架测试用的。这个注解是指定测试的时候使用的执行类,不写的话会使用默认的执行类

    @RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境

    @ContextConfiguration :Spring整合JUnit4测试时,使用注解引入多个配置文件

    单个文件时:

    @ContextConfiguration(Locations="classpath:applicationContext.xml") 

    多个文件时:可用{}

    @ContextConfiguration(Locations = { "classpath:spring1.xml", "classpath:spring2.xml" })

     

  • 相关阅读:
    vue typescript: Parameter ‘XXX’ implicitly has an ‘any’ type.解决方法
    ESLint学习(一)简介、安装、配置、命令行、规则
    使用vite搭建vue3项目(三) 配置国际化
    VUE3+Typescript 引用process提示错误
    centos7安装vsftpd,配置
    使用vite搭建vue3项目(一) 创建一个工程
    Symbols 是 JavaScript 最新推出的一种基本类型
    使用vite搭建vue3项目(二) 引入vuerouter
    在使用vite时使用import.meta.globEager 代替 require.context 自动导入文件
    VUE3.X版本error: Parsing error: Parsing error: Unexpected token 的解决办法
  • 原文地址:https://www.cnblogs.com/zengcongcong/p/10360248.html
Copyright © 2011-2022 走看看