Spring之AOP的使用

1. 搭建环境.导入jar包

AOP需要的jar包
spring.jar
commons-logging.jar
cglib-nodep-2.1_3.jar
aspectjweaver-1.7.4.jar
aspectjrt-1.7.4.jar

2.搭建实体类

搭建实体类

package com.xx.entity;

//目标接口(老板的业务需求)
public interface TargetDao{
    //添加
    void add(String model); 
    //查询
    void find();
}
package com.xx.entity;
//老板
public class TargetObject implements TargetDao{

    public void add(String model) {
        System.out.println("session.save("+model+")");
    }

    public void find() {
        System.out.println("session.find(?,?,?)");
    }

}

3.配置切面

package com.xx.aspect;
//开启第一个切面: session切面
public class SessionAspect {

    //开启session
    public void openSession() {
        System.out.println("开启session");
    }
    //关闭session
    public void closeSession() {
        System.out.println("关闭session");
    }
}

配置第二个切面

package com.xx.aspect;
//定义第二个切面:事物切面
public class TransactionAspect {

    //开启事务
    public void openTransaction() {
        System.out.println("开启事务");
    }

    //提交事务
    public void commit() {
        System.out.println("提交事务");
    }
}

4.写配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/xx/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLxx-instance"
    xmlns:aop="http://www.springframework.org/xx/aop" xsi:xxLocation="
        http://www.springframework.org/xx/beans http://www.springframework.org/xx/beans/spring-beans.xsd
        http://www.springframework.org/xx/aop http://www.springframework.org/xx/aop/spring-aop.xsd"> <!-- bean definitions here -->


    <!-- 配置切面 -->
    <!--配置第一个切面:sessionAspect  -->
    <bean id="sessionAspect" class="com.lanou.aspect.SessionAspect"/>
    <bean id="transactionAspect" class="com.lanou.aspect.TransactionAspect"/>

    <!--配置目标代理类  -->
    <bean id="targetDao" class="com.lanou.entity.TargetObject"/>

    <!--配置AOP  -->
    <aop:config>
        <!--配置切入点  -->
        <aop:pointcut expression="execution(* com.lanou.entity.*.*(..))" id="p"/>
        <!--引入session切面  -->
        <aop:aspect ref="sessionAspect">
            <!--前置通知  -->
            <aop:before method="openSession" pointcut-ref="p"/>
            <!--后置通知  -->
            <aop:after-returning method="closeSession" pointcut-ref="p"/>
        </aop:aspect>
        <!--引入ts切面  -->
        <aop:aspect ref="transactionAspect">
            <!--前置通知  -->
            <aop:before method="openTransaction" pointcut-ref="p"/>
            <!--后置通知  -->
            <aop:after-returning method="commit" pointcut-ref="p"/>
        </aop:aspect>
    </aop:config>
</beans>

5.测试

package com.xx.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.xx.entity.TargetDao;

public class TestSpring {

    public static void main(String[] args) {
        //1.初始化Spring容器
        ApplicationContext ctx
            =new ClassPathXmlApplicationContext("applicationContext.xml");
        //2.提取bean
        TargetDao td=(TargetDao) ctx.getBean("targetDao");
        td.add("user");
    }

}

运行结果

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值