Spring Aop(一)源码解析

图1 Aop示例:

图2

图3

图4

图5

打印结果

动态代理的例子。

 

 

现在有一个需求; OrderServiceImpl 里 调用 OrderTabDao  。这个OrderTabDao 有两个实现类,一个是OrderTabDaoAImpl 类。一个是OrderTabDaoBImpl的类。当我们给OrderServiceImpl的query() 方法传入A 的时候调用的是OrderTabDaoAImpl 。当我们给OrderServiceImpl的query() 方法传入B 的时候调用的是OrderTabDaoBImpl; (问题来了spring 有那么多扩展点,可以不可以用以前学的呢,以前学的扩展点都是在spring 环境示例化的时候来做的,就目前的时候是已经登录后了,示例化完了。已经存在了OrderServiceImpl 和OrderTabDao 没有办法再改变了。那怎么办?可以吧这些类再拿出来改一下呗,ApplicationContextAware接口)

第一种方法实现ApplicationContextAware接口, 获取到ApplicationContext对象,然后根据query方法传的参数 ,A或者B.来选择调用不同的Dao 的实现类。

第二种方法特别简单。只需要在 OrderServiceImpl中注入一个Map <String,OrderTabDao>  map ,不用实现任何接口。然后根据query方法传的参数 ,A或者B.来选择map 获取不同的值。图9

图6

图7

图8

OrderTabDaoBImpl和图8类似,不截图了。

图9

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值