SpringAop理解(1) java静态代理

今天我决定复习一下sprongAop,以便加深印象,在这里做个笔记并为大家展示参考学习。

如有不足之处,请指正。

在复习AOP之前,我决定先复习一下java静态代理。

静态代理设计模式:

1、为什么需要代理模式?

DAO ---> Service --> Controller

在javaEE开发中,最为重要的是Service层。

Service层中包含了 核心功能(几十行或者上百行代码)和 额外功能(附加功能)。

核心功能 = 业务运算 + DAO调用

额外功能 = 事务、日志、性能分析等...

额外功能书写在Service层中好不好?

Service层的调⽤者(Controller) 的⻆度来说:   需要在Service层书写额外功能。

软件设计者:Service层不需要额外功能

那我们如何解决? 理论是枯燥的,那我们直接上代码

开发环境: IDEA + jdk8

我们先创建一个接口 User,以自身为例:

我只会吃,所以我有一个方法:

那就是吃! 

 

然后有一个人 (UserImpl) 继承了我(莫非是我失散多年的儿子?)

他居然也只会吃,而且吃得很多

 然后有一天,他发现吃完饭后拉肚子,苦思冥想,莫非是饭前没洗手的问题?

他决定在吃饭前洗手! 

我们不考虑代理的情况下,可以这样写:

但是! 问题来了,我们居然修改了核心功能的代码!

这是万万不可的,在我们的代理设计模式下不能这么做,因为如果我们需要 解耦合!这事就需要我们的 静态代理 出场了(当当当)...

我们先注释掉洗手的代码

那我们应该如何增加 静态代理 呢?

我们在创建一个类 UserProxy 实现了 接口 User

 如何通过静态代理:(如下)

 

 

这样写有什么好处呢?

       答案是: 不用修改原来的代码!

接下来我们使用 Junit 单元测试 测试此功能(如果没学过可以新建类 使用 main 进行测试)

      

         

 

 嗯,好像到这里就结束了。这 就是静态代理,还是比较容易理解的。

那么静态代理存在什么问题呢?

        1. 静态类⽂件数量过多,不利于项⽬管理 

        2. 额外功能维护性差 代理类中 额外功能修改复杂(麻烦)

那么接下来我就会带大家在学习(复习)下个章节(动态代理!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

com.蒙大侠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值