今天是对于SSM,三种框架的深入学习和理解
Spring
概述:
为了解决项目中各层之间的松耦合问题(起到组件之间的粘结作用). 开源框架.
好处:
1.不依赖于应用服务器.
2.IOC(控制反转)技术实现组件控制, 通过DI(依赖注入)技术提高了组件之间的解耦.
3.通过AOP(面向切面编程)技术实现安全、事务、日志功能的统一管理,提高复用.
4.Spring框架可以几乎与其他任何框架进行良好的整合使用.
5.Spring所有项目之间不相互依赖.
IOC和DI :
IOC : 控制反转. 本质: 将手动创建对象的工作,交给Spring容器实现完成.
1.在Spring容器中可以配置创建实例对象.无论带参,无参构造实例都是可以实现的.
Spring.xml容器中配置: <bean id=”’ class=”” >
2.如何通过注解的用法代替Spring配置文件中的写法.实现IOC控制.
2.1: 首先需要在实体类中: 采用注解.
@Component , @Controller , @Service , @Repository
2.2: 基于spring容器配置注解的扫描和支持.
<context:component-scan base-package="父包">
切记 :
当采用IOC注解的方式进行对象的创建,在没有指定对象名的情况下,默认生成对象名称: 类名称首字母小写作为: 默认的对象名.
DI : 依赖注入.含义 : 指的是针对实体类中: 属性成员赋值操作.
针对实体中的属性实现注入: 采用容器配置写法实现.
1.1:类中依赖的属性: 必须get/set封装.
1.2:进行注入:<property name=”属性名” value=”属性值” ref=”属性引用”/>
属性的注入: 也可采用注解的写法实现.
//无需提供属性的get/set封装方法实现注入.
@Resource(name=”对象名”) //根据对象名称进行spring容器查找,并注入.
Private BanJi bj1;
@Autowired //根据类型进行spring容器查找,找到指定类型对象,直接注入.
Private BanJi bj1;
SpringMVC
概述
一款表现层MVC框架.
1.springMVC的加载核心控制器:DispatcherServlet.
内部: 1.1:初始化方法中将进行各种组件解析器的加载.
initMultipartResolver(context);
initLocaleResolver(context);
initThemeResolver(context);
initHandlerMappings(context);
initHandlerAdapters(context);
initHandlerExceptionResolvers(context);
initRequestToViewNameTranslator(context);
initViewResolvers(context);
initFlashMapManager(context);
- HandlerMappings核心组件:创建映射器:
将客户端的请求地址 : 用于匹配所有的@RequestMapping注解地址.
如果没有自定义的解析器
将采用默认的:
BeanNameUrlHandlerMapping.
- HandlerAdapters适配器: 可以负责调用找到的Controller对象和方法.
默认适配器: SimpleControllerHandlerAdapter
- ViewResolvers: 视图解析器. 当用户响应视图时,
用作视图页面的解析展示.
默认视图解析器: InternalResourceViewResolver.
所有的用户请求都将在DispatcherServlet中的doService()方法中实现:
1.匹配器的匹配.
2.匹配成功后的适配器调用.
3.返回结果视图解析器的解析.
4.最终由DispatcherServlet完成响应.
Mybatis
概述:
一个持久层操作框架.
Mybatis与hibernate 使用区别:
Hibernate : 可以高度的对jdbc实现封装. 不用编写sql,即可映射操作数据库. 针对复杂的多表关系, 可以方便关联操作. 场景: 当业务实体之间关系关联操作时,hibernate擅长处理. 不擅长: 复杂的业务关联关系.
示例: OA.政府档案,数据管理系统.
Jdbc : 其实所有的持久层框架都是以JDBC为基础,进行封装优化. 好处: 单个操作效率高. 缺点: 参数传递,返回值封装.
Mybatis : 其实针对jdbc的完美封装, 保留了jdbc的sql编写方式. 优化了参数绑定,返回值封装等缺点.学习成本低.
示例: 网上电商, 金融项目
体架构:
SqlMapConfig.xml(核心配置文件) : 体现SqlSessionFactory,SqlSession.
↓
Mapper.xml(动态sql语句实现)
↓
MappedStatement(方便动态加载sql,用于绑定参数,封装返回值).
↓
DB(数据库)