java面向切面编程AOP模拟银行查询转账购买流程(理解版)

4 篇文章 0 订阅
2 篇文章 0 订阅

这里侧重AOP流程方面理解。
AOP:aspect oriented programming,是对面向对象编程的有益补充。AOP一般适用于具有横切逻辑的场合,如访问控制,事务管理,性能监测等。
Spring AOP案例:
模拟银行业务流程。
主要功能流程:查询、转账、购买
扩展:每一项功能都需要安全检查、功能、日志记录、清楚缓存四步骤。
《查询、转账、购买功能,均以简单的输出语句表示,侧重AOP流程方面解释,未做具体功能的实现。》

业务逻辑(步骤):
//步骤一:
public class Security {//安全检查
public void isSecurity(){
System.out.println(“Security----isSecurity()----环境安全了”);
}
}
//步骤二:主要功能
接口(功能):
public interface BocDao {
void select();//查询
void transfer();//转账
void buy();//购买
}
//接口实现:
//实现查询,以输出简单表示,下同。
public class BocDaoImpl implements BocDao {
public void select(){ //连接点
System.out.println(“BocDaoImpl----select()----查询结果:余额为10亿”);
}
//转账
public void transfer(){
System.out.println(“BocDaoImpl----transfer()----向对方转账2个亿”);
}
//购买
public void buy(){
System.out.println(“BocDaoImpl----buy()----花费5亿购买别墅”);
}
}
//步骤三:
//日志模块
public class Logger {
public void logger(){
System.out.println(“Logger----logger()—日志记录”);
}
}
//步骤四:
//清除缓存
public class ClearCache {
public void clear(){
System.out.println(“ClearCache—clear()----清楚缓存”);
}
}

配置aop的xml
main目录下新建resources后完成加载,并配置beans_aop.xml文件 参考如下:

  <?xml version="1.0" encoding="UTF-8"?>
  <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:aop ="http://www.springframework.org/schema/aop"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   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">
<!--AOP
1,目标类
2,通知类
3,切面
-->
<!--目标类-->
<bean id="bocDao" class="com.k9501.b.dao.impl.BocDaoImpl"></bean>
<!--通知类-->
<bean id="security" class="com.k9501.b.security.Security"></bean>
<bean id="log" class="com.k9501.b.logger.Logger"></bean>
<bean id="cc" class="com.k9501.b.cache.ClearCache"></bean>
<!-- 切面-->
<!--AOP-->
<  aop:config>
    <!--切入点pointcut
        id:给切入点取名
        expression:切入点表达式,获取切入点  连接点
        execution()中*表示返回值任意。在impl包下,bocdaomimpl(*所有)类中的所有方法的任意参数,
        都是切入点-->
<aop:pointcut id="pointCut" expression="execution(* com.k9501.b.dao.impl.*.*(..))"></aop:pointcut>
    <!--日志-->
    <!--后置通知order值越大,越先执行-->
    <aop:aspect ref="log" order="2">
        <aop:after method="logger" pointcut-ref="pointCut"></aop:after>
    </aop:aspect>
    <!--缓存-->
    <aop:aspect ref="cc" order="1">
        <aop:after method="clear" pointcut-ref="pointCut"></aop:after>
    </aop:aspect>
</aop:config>
</beans>

最后测试类:(导包省略)
主要代码:

public class BocTest {//AOP动态代理
 @Test
public void bocDaoAopTest(){
    ApplicationContext applicationContext= 
    	new ClassPathXmlApplicationContext("aop/beans_aop.xml");
    BocDao bocDao=(BocDao) applicationContext.getBean("bocDao");
    System.out.println("AOP动态代理--测试");
    bocDao.select();//调用查询方法
    //bocDao.transfer();//调用转账方法
    //bocDao.buy();//调用购买方法
    //关闭容器
    ((ClassPathXmlApplicationContext) applicationContext).close();
}
}

以上功能查询、转账、购买功能,均以简单的输出语句表示,侧重AOP流程方面解释,未做具体功能的实现。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰少2020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值