AOP作用
名称:面向切面编程.
一句话总结: 在不改变原有代码的条件下,对功能进行扩展.
公式: AOP = 切入点表达式 + 通知方法.
如上图 考虑到要将redis缓存服务提取出来 低耦合
原有findItemCatList方法上加扩展就好了 aop扩展
前提:写好注解(切入点表达式) 插入放在目标方法的上方
再者: 在目标方法基础上 编写切入点方法(注解 相当于if)
1). bean(bean的id) 类名首字母小写 匹配1个类
2). within(包名.类名) 按包路径匹配类 匹配多个类
上述表达式是粗粒度的控制,按类匹配.
3).最常用的: execution(返回值类型 包名.类名.方法名(参数列表))
4).本次使用的 我觉得也是很常用的 实用性强 @annotation(包名.注解名) 按注解进行拦截.
一个标识注解 标识我要在哪里加入 哪里做扩展
通知方法
这里应用环绕通知
环绕通知: 在目标方法执行前后都要执行的通知方法. 控制目标方法是否执行.并且环绕通知的功能最为强大.**
扩展 jointPoint理解
扩展 aop业务分析
扩展 业务分析 当第一次查询的时候 key不存在 需要先查询数据库 再存入redis
return扩展 返回数据呈现到页面
aop查询redis事务分析 前提 第一次key空 查询过数据库之后 set(存入了)值在redis里面
业务分析 需要获取json数据后 ,直接转化成对象 然后返回 呈现在页面中
把key 和 json存进去了
下图来自第一步
分析得出 根据json串 还原回result对象就足够了
开始写业务代码
如下图 第二个要传的(需要的参数)是别人的返回值类型
如上图抛出疑问 如何获得返回值类型
如上图 所有我们要想办法 获得当前所在方法的返回值类型
最基础的反射机制
拿到返回值类型 就能拿到方法 然后其余的都可以拿到了
得到方法的名字后 就可以得到方法的参数列表
只有拿到了方法的名字 和方法的参数列表 才能过回去动态反射回来的这个方法对象
然后发现缺少一个class的类型
我们把参数转化成类型就行
如上图 然后把类型转化成具体的数组遍历
最基础的代码 很麻烦
可以通过封装的api去解决问题
这个API可以得到方法中的任意参数 点进去看
signature可以标识为连接点的标记
如上图 是一个接口
这就是 redis二次查询得事务分析 今晚再实现 自己手敲代码 太欠缺了