Spring总结
来源:互联网 发布:数据库简答题 编辑:程序博客网 时间:2024/06/07 16:15
什么是spring的ioc?
Ioc就是所谓的控制反转,指的是将spring的创建销毁都交给spring来管理,控制权就是对象的创建与销毁,反转就是交给spring
什么是di,依赖注入?
如果A类需要使用B类,我们可以认为A类要依赖于B类,这时候我们把A类和B类同时交给sprig来创建,将B类由spring依赖注入到A类里面
注入的方式?
Setter
Set方法
构造器
注解的方式,(前提是A类、B类都要交给spring来管理,否则无法注入)
什么是aop?
Aop是面向切面编程,spring对aop的支持有四种方法
最常用的是aspect方式
面向切面编程就是横跨多个类的关注点的模块化,换句话说,就是我们在多个类,这个类里面有一些公共的方法,比如说都以add开头,这些方法在执行前和执行后,我们要执行另一些操作,针对这些场景我们可以使用aop,所以我们这些方法一般叫做连接点,匹配这些连接点我们叫做切点,切点的行为就是通知,用来描述切点的这个类就是切面;
所以我们首先要定义一个切面类,切面类里面要有切点,要有通知,当某个连接点时,切点表达式去匹配那个切点,然后根据对应的通知去执行
哪些地方用到了aop?
日志
一般controller层会有一个注解,比如增删改除了查询,所有的方法加一个注解,在操作这些方法的时候,它对应的操作会记录下来;比如说一个用户要来新增,新增上面要注解一下,然后这个新增方法会被拦截,拦截之后会获取对应的请求ip还有时间,当前用户,把这些信息记录起来插到数据库里
我们在service层还会拦截一次,这时候拦截就表现在两方面:比如说它新增了一个用户,新增了哪些信息,有必要把它记录起来,他修改哪些信息我们在service层要把它抓取,其次,我们的service层去访问我们的持久层,结果出错了连不上,抛出异常,针对这种情况我们也需要把它记录下来
所以我们的日志要在service层还有我们的controller层都要拦截。Controller主要拦截用户的操作,什么时候,哪一个用户ip做了什么操作;而我们的service层主要记录一些日志,新增修改删除那些数据,如果抛出异常,要将这些信息记录下来
缓存
Redis缓存就是用aop做的,我们用的环绕通知,比如我们新增的方法上面加一个注解,这个注解用来拦截所有的新增请求,新增的时候先存到缓存里面,再新增到数据库里面,查询的时候,注解一下,先从缓存里面查,如果没有再去数据库里面查,查出来再放到缓存里面,再返回去,如果缓存里面有再去做
怎么保证数据库与缓存的一致性?
这块不是我负责的,但是我可以尝试说说
我们有个定时任务,每到晚上12点会定时刷新一次
如果我们觉得数据库差异太大我们会手动刷新一次,这一点不好处就是刷新的时候用户不能访问,如果访问的时候数据是有问题的,要先清空缓存再刷,所以维护起来会选一个时间段
实际上要根据业务情况,
可以把它存到redis中,首先要保证第一次要写到redis里(可能代码量大)
权限
已经实现好的,让我们自己去实现权限的话好像也没有什么可做的了
Secret、shiro、注解到某一个方法上可以认为这个方法加一个权限
- Spring总结
- Spring总结
- spring总结
- spring总结
- spring总结
- Spring总结
- spring 总结
- spring总结
- Spring总结
- Spring 总结
- spring总结
- spring 总结
- spring 总结
- spring总结
- Spring总结
- Spring总结
- Spring总结
- spring 总结
- C#中Protobuf实用指南与性能对比
- ceph shell
- Excel浏览大工作表的方法(使用鼠标键盘名字框加定位)
- PC连上WIFI,浏览器找不到服务器无法上网 解决
- Linux下 mysqli_fetch_all函数问题
- Spring总结
- notes_September
- Nginx + JDK + Tomcat 负载均衡 集群 部署指南
- “==”和equals方法的区别
- 你们终于喊出自己就是公有云了?
- Linux下zookeeper的安装
- viewpager嵌套viewpager滑动处理
- java web学习总结27:jsp简单标签开发案例和打包
- VS code快捷键