综述
按先后顺序学习了Mybatis,Spring,SpringMVC
Mybatis
Spring
Bean是否线程安全:
不是
Spring中的Bean默认是单例模式,Spring没有对它多线程的封装。
Bean大部分时间是无状态的(dao)=》安全。
如果Bean有状态(view,model)=》开发者自己去保证线程安全,可以改变作用域为‘prototype’,相当于new Bean()。
有状态:数据存储功能
无状态:不会保存数据
Spring处理并发问题
一般只有无状态的Bean才能在多线程下共享,Spring中,大部分Bean可以声明为Singleton,因为Spring对非线程安全的Bean采用ThreadLocal以解决线程问题。
SpringMVC
遇到的问题
学习各框架过程中遇到的问题
- 拦截器的使用
使用拦截器时需要重写实现了HandlerInterceptor
接口的preHandle
方法。
使用拦截器时首先要明确需要拦截的目标地址、拦截对象、拦截过程,以及额外放行的目标地址,防止不知目的的拦截,以造成功能紊乱,条理不清。
接触SSM开源项目遇到的问题
-
jar包 版本问题
由于Mybatis-Spring 与 Mybatis、Spring等框架需要在版本上对应起来,否则无法运行项目,需要进行配置
-
JDBC 配置问题
在使用高版本MySQL时,配置JDBC中需要声明是否使用useSSL,如果不使用需要在url
处声明useSSL=false
有时也需要在url
处配置serverTimezone=UTC
-
jar包 版本紊乱
Caused by: java.lang.IllegalArgumentException: 找到多个名为spring_web的片段。这是不合法的相对排序。有关详细信息,请参阅Servlet规范的第8.2.2 2c节。考虑使用绝对排序。
出现这种情况表示包的更新出现问题,需要经过
maven中的clean
与reload
来更新包,经验证,项目成功发布
学习心得
掌握了SSM部分原理及使用方法,能开始分析一些简单的SSM开源项目(2022.1.10)
学习使用configuration配置项目(2022.1.15)