Spring

一 Spring.
Spring是一个 控制反转 和 面向切面 的容器框架.

什么是控制反转(IOC)?
借助Spring实现具有依赖关系的对象之间的解耦. 对象A运行需要对象B, 由主动创建变为IOC容器注入, 这便是控制反转.

什么是依赖注入(DI)?
获得依赖对象的过程被反转了, 获取依赖对象 的过程 由自身创建变为 由IOC容器注入.

什么是面向切面编程(AOP)?
将业务逻辑的各个部分 进行隔离, 使开发人员在编写业务逻辑时可以专心于 核心业务, 从而提高开发效率.
AOP的应用场景: 需要在具体的业务方法前后, 执行统一业务逻辑处理的代码.
1 统一的数据封装格式.
2 统一的异常处理.
3 计算方法执行的时间.
4 记录http请求的日志.
AOP的实现方式. 根据 是否实现接口 来决定使用哪一种动态代理.
1 JDK 的实现方式. Proxy + InvacationHandler. 前提: 被代理类需要实现某一接口, 通过接口来使用. 使用的时候使用代理类, 不再使用被代理类.
2 CGLIB 的实现方式. 通过 ASM字节码技术, 生成代理类的字节码. 前提: 被代理类不需要实现接口.

Spring 框架七大主要模块?
1、Core. 是Spring的核心类库, Core实现了IOC功能。
2、AOP. 是Spring的AOP库,提供了AOP(拦截器)机制,并提供常见的拦截器,供用户自定义和配置。
3、orm. 提供对常用ORM框架的管理和支持,hibernate、mybatis等。
4、Dao. Spring提供对JDBC的支持,对JDBC进行封装。
5、Web. 对Struts2的支持。
6、Context. Context模块提供框架式的Bean的访问方式,其它程序可以通过Context访问Spring的Bean资源,相当于资源注入。
7、MVC. 为spring提供了一套轻量级的MVC实现,即Spring MVC.

使用 Spring 框架优点?
1、轻量级框架、容器. Spring是一个容器,管理对象的生命周期和配置。基于一个可配置原型prototype,你的bean可以使单利的,也可以每次需要时都生成一个新的实例。
2、控制反转IOC. Spring通过控制反转实现松耦合。
3、支持AOP. Spring提供对AOP的支持,它允许将一些通用任务,如安全、事务、日志等进行集中式处理,从而提高了程序的复用性。
4、方便测试. Spring提供Junit4的支持,可以通过注解方便测试spring程序。
5、方便集成各种优秀框架, 如Struts、hibernate、mybstis。
6、支持声明式事务处理, 只需通过配置就可以完成对事务的管理,而无须手动编程。
缺点?
1 依赖反射,反射影响进程.
2 太过于依赖设计模式。
3 控制器过于灵活。
4 不支持分布式应用。

什么是bean?
bean 是一个由 Spring IOC容器实例化、组装和管理的对象. 获取依赖对象的过程由自身创建变为由IOC容器注入.

Spring Bean 的生命周期?
1 通过构造器 创建bean实例;
2 为bean的 属性赋值;
3 调用bean的 初始化方法;
4 使用bean;
5 当容器关闭时, 调用bean的 销毁方法.

二 SpringMVC.
1 基本概念: 属于 Spring框架的一部分, 用来 简化MVC架构的web应用程序开发.

2 执行流程: 核心是 控制反转 和 面向切面.
(1) 首先用户 发送请求到 前端控制器, 前端控制器根据请求信息, 来决定 选择哪一个 页面控制器 进行处理并把请求委托给它.
(2) 页面控制器接收到请求后, 进行功能处理. 首先需要 收集和绑定请求参数到一个对象, 并进行验证. 然后 将命令对象委托给 业务对象进行处理. 处理完毕后返回一个 模型数据 和 逻辑视图名.
(3) 前端控制器 收回控制权, 然后根据返回的逻辑视图名, 选择相应的视图进行渲染, 并把模型数据传入 以便视图渲染.
(4) 前端控制器 再次收回控制权, 将响应 返回给用户.

3 优点:
(1) 拥有强大的 灵活性, 非侵入性和可配置性.
(2) 提供了一个 前端控制器dispatcherServlet, 开发者无需额外开发控制器对象.
(3) 分工明确, 每一个功能实现 由一个专门的对象负责完成.
(4) 可以自动绑定用户输入, 并正确的转换数据类型.
(5) 可重用的业务代码: 可以使用 现有的业务对象作为命令或表单对象, 而不需要去扩展某个特定框架的基类.

4 缺点
(1) servlet API耦合难以脱离容器独立运行.
(2) 太过于细分, 开发效率低.

三 Spring Boot.
基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突、引用的不稳定性得到了解决。

优点?
1 快速构建项目,可以选一些必要的组件;
2 对主流框架的无配置集成;
3 内嵌Tomcat容器,项目可独立运行;
4 删除了繁琐的xml配置文件;
5 极大地提高了开发和部署效率;
缺点?
1 版本迭代速度快,一些模块改动很大;
2 由于无须配置,报错时很难定位;

Spring Boot和Spring MVC的区别
1 SpringMVC是基于spring的一个MVC框架.
2 Spring Boot的基于spring的条件注册的一套快速开发整合包.

四: 什么是 ORM 框架?
ORM, 对象关系映射. 是为了解决 面向对象与关系型数据库存在的 不匹配问题. 优点:
1 开发效率更高.
2 数据访问更抽象、轻便.
3 支持面向对象封装.

mybatis 和 hibernate 的区别?
1、两者最大区别: 针对简单逻辑, 都有对应的代码生成工具, 可以生成简单基本的dao层方法.
针对高级查询, mybatis要 手动编写sql语句和resultMap, 而hibernate有 良好的映射机制;
2、开发难度对比: mybatis < hibernate.
3、日志统计: mybatis 需要借助 log4j来记录日志, 而hibernate 自有己的日志统计功能.
4、数据库扩展比较: mybatis < hibernate.

如何选择 mybatis和 hibernate?
mybatis需要编写sql和映射规则,工作量大于hibernate; mybatis支持的工具也有限,不能像hibernate那样有许多插件可以帮助生成映射代码和关联关系;
1 对于 性能要求 不太苛刻的系统, 比如 管理系统, 推荐 hibernate;
2 对于 性能要求高, 响应快, 灵活的系统, 比如 电商系统, 推荐使用 mybatis.

mybatis 的一级缓存和二级缓存.
一级缓存是 session 级别的缓存, 默认开启. 当查询一次数据库时, 对查询结果进行缓存, 如果之后的查询在一级缓存中存在, 则无需再访问数据库.
二级缓存是 sessionFactory 级别的缓存, 需要配置才会开启. 当进行sql语句查询时, 先查看一级缓存, 如果不存在, 访问二级缓存, 降低数据库访问压力.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值