Spring的AOP入门开发与spring整合Junit(八)

17 篇文章 0 订阅

在applicationContext.xml配置文件中引入AOP约束后,想要进行Spring的AOP开发,还需要导入三个jar包,两个Spring的包和一个AspectJ的包

spring-aop-5.1.5.RELEASE
spring-aspects-5.1.5.RELEASE
com.springsource.org.aspectj.weaver-1.6.8.RELEASE
在这里插入图片描述

首先定义一个需要被增强的类 ProductDaoImpl:

我们打算增强其中的save方法,在执行save方法前先进行一次权限校验,也就是前置通知。

public class ProductDaoImpl implements ProductDao {
    @Override
    public void save() {
        System.out.println("保存商品");
    }

    @Override
    public void update() {
        System.out.println("修改商品");
    }

    @Override
    public void find() {
        System.out.println("查找商品");
    }

    @Override
    public void del() {
        System.out.println("删除商品");
    }
}

再定义一个切面类,也就是通知所处的类,编写增强动作的逻辑方法,用来做权限校验功能 MyAspectXML :

public class MyAspectXML {
    public void checkPri(){
        System.out.println("权限校验");
    }
}

然后在配置文件中,将这两个类交给Spring管理,注册bean标签
这一步也可以在类上使用注解的方式完成,不过注解的话还需要在配置文件中增加组件扫描的配置。

bean标签的注册:

 <bean id="ProductDao" class="SpringAopdemo.ProductDaoImpl"/>
 <bean id="myAspect" class="SpringAopdemo.MyAspectXML"/>

同时,在配置文件中还要进行代理的配置,通过AOP的配置完成对目标类的代理:

代理的配置:

<!--配置代理,通过AOP的配置完成对目标类产生代理-->
<aop:config>
    <!--通过表达式配置哪些类的哪些方法需要进行增强-->
    <!--  * 代表任意返回值-->
    <!--  .. 代表任意参数-->
    <aop:pointcut id="pointcut1" expression="execution(* SpringAopdemo.ProductDaoImpl.save(..))"/>

    <!--配置切面-->
    <!--配置通知和切入点-->

    <!--指定切面类,也就是增强方法的类-->
    <aop:aspect ref="myAspect">
        <!--配置通知(增强方法),和指定的切入点(被增强的方法)-->
        <aop:before method="checkPri" pointcut-ref="pointcut1"></aop:before>
    </aop:aspect>
</aop:config>

然后编写一个Junit的测试类,同时在这一步中完成Spring与Junit的整合。

目的是为了让Junit帮我们创建Spring工厂,不用每次写测试类的时候都需要去new applicationContext工厂类对象,我们只需要在测试类中定义对象成员,使用@Resource注解为其注入属性即可。

Spring与Junit的整合:

Spring与Junit整合,需要引入一个jar包

spring-test-5.1.5.RELEASE

在这里插入图片描述

同时编写一个测试类test,使用@RunWith 和 ContextConfiguration 类注解,自动为这个类生成一个Spring 工厂,然后就可以正常的在类中使用applicationContext工厂类获取bean对象了,或者适应@Resource 对对象成员进行属性注入。

test:

/*
* Spring整合junit测试单元
* 通过注解来加载xml配置文件,并且自动生成工厂,无需在单元中new工厂
* 只需在测试类中添加类的成员,并且使用@Resource注入属性即可
* */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class testdemo {

    @Resource(name="ProductDao")
    private ProductDao productDao;

    @Test
    public void test(){
        productDao.save();
        productDao.update();
        productDao.del();
        productDao.find();
    }
}

最后运行测试类,输出结果如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值