Spring框架知识整理
Spring框架主要构成
Spring框架主要有7个模块:
1.Spring AOP:面向切面编程思想,同时也提供了事务管理。
2.Spring ORM:提供了对Hibernate、myBatis的支持。
3.Spring DAO:提供了 对Data Access Object模式和JDBC的支持。实现业务逻辑与数据库访问代码分离,降低代码耦合度。
4.Spring Web:提供了Servlet监听器的Context和Web应用的上下文。
5.Spring Context:提供了Spring上下文环境,以及其他如国际化、Email等服务。
6.Spring MVC:提供了MVC设计模式的实现。
7.Spring core:提供了Spring框架基本功能(IOC功能),如工厂模式BeanFactory创建所需对象、通过读取xml文件实例化对象、组件生命周期管理等。

IOC
Inverse of Control控制反转或叫依赖注入,是一种降低对象之间耦合关系的设计思想。
一般而言,在分层体系结构中,都是上层调用下层的接口,上层依赖于下层的执行, 即调用者依赖于被调用者。
而通过 IoC 方式, 使得上层不再依赖于下层的接口,即通过采用一定的机制来选择不同的下层实现, 完成控制反转, 使得由调用者来决定被调用者。
IoC 通过注入一个实例化的对象来达到解耦和的目的。使用这种方法后,对象不会被显式地调用,而是根据需求通过 IoC 容器( Spring)来提供。
举个例子来说IOC
采用 IoC 机制能够提高系统的可扩展性, 如果对象之间通过显式的调用进行交互, 那么会导致调用者与被调用者存在着非常紧密的联系, 其中一方的改动将会导致程序出现很大的
改动。
例如,要为一家卖茶的商店提供一套管理系统,在这家商店刚开业的时候只卖绿茶(Green Tea) ,随着规模的扩大或者根据具体销售量,未来可能会随时改变茶的类型,例如红
茶(Black Tea)等,传统的实现方法会针对茶抽象化一个基类,绿茶类只需要继承自该基类即可。
采用该实现方法后,在需要使用 Green Tea 的时候,只需要执行以下代码即可:Abstract Teat = new Green Tea(),当然,这种方法是可以满足当前设计要求的。但是该方法的可扩展
性不好,存在着不恰当的地方。
例如,当商家发现绿茶的销售并不好,决定开始销售红茶(Black Tea) 时, 那么只需要实现一个 Black Tea 类, 并且让这个类继承自 Abstract Tea 即可。
但是,在系统中所有用到 Abstract Tea t = new Green Tea()的地方,都需要被改为 Abstract Teat = new Black Tea(),而这种创建对象实例的方法往往会导致程序的改动量非常大。
那么怎样才能增强系统的可扩展性呢?此时可以使用设计模式中的工厂模式将创建对象的行为包装起来。
可以把创建对象的过程委托给 TeaFatory 来完成,在需要使用 Tea 对象的时候,只需要调用 Factory 类的 get Tea 方法即可,具体创建对象的逻辑在 TeaFactory 中来实现, 那么当商家需要把绿茶替换为红茶的时候, 系统中只需要改动 TeaFactory 中创建对象的逻辑即可。当采用了工厂模式后,只需要在一个地方做改动就可以满足要求,从而增强了系统的可扩展性。
虽然说采用工厂设计模式后增强了系统的可扩展性, 但是从本质上来讲, 工厂模式只不过是把程序中会变动的逻辑移动到工厂类里面了, 当系统中的类较多的时候, 在系统扩展时
需要经常改动工厂类中的代码。而采用 IoC 设计思想后,程序将会有更好的可扩展性。

Spring 容器将会根据配置文件来创建调用者对象(Sale) ,同时将被调用的对象(AbstractTea 的子类)的实例化对象通过构造方法或 set 方法的形式注入到调用者对象中。
当需要把 Blue Tea 改为 Black Tea 时,只需要修改上述配置文件即可,而不需要修改代码。
IOC特点
具体而言,IoC 主要有以下几个方面的优点:
1)通过 IoC 容器,开发人员不需要关注对象是如何被创建的,同时,增加新类也非常方便,只需要修改配置文件即可实现对象的热插拔。
2)IoC 容器可以通过配置文件来确定需要注入的实例化对象,因此,非常便于进行单元测试。
尽管如此,IoC 也有自身的缺点,具体表现为如下两点:
1)对象是通过反射机制实例化出来的,因此,会对系统的性能有一定的影响。
2)创建对象的流程变得比较复杂。
Spring框架知识整理的更多相关文章
- Spring Ioc知识整理
Ioc知识整理(一): IoC (Inversion of Control) 控制反转. 1.bean的别名 我们每个bean元素都有一个id属性,用于唯一标识实例化的一个类,其实name属性也可用来 ...
- 2018/9/6 spring框架的整理
spring知识的巩固整理AOP和ioc概念,以及了解到了为何要使用spring框架的目的,作用:变换资源获取的方向.更像是按需所求.配置bean的方式:利用XML的方式,基于注解的方式两种.1通过全 ...
- Spring框架知识总结-注入Bean的各类异常
近日整合sping和hibernate框架时遇到了一系列的异常,本次主要说明一下spring框架可能出现的异常及解决方案. 我们借助sping强大的bean容器管理机制,通过BeanFactory轻松 ...
- Java开源框架知识整理
1.Spring的了解 Spring是一个轻量级的IOC/DI和AOP容器的开源框架.可以实现Java模块化开发,贯穿表现层,业务层,逻辑层,实现各层之间的解耦合关系. IOC,控制反 ...
- Spring框架知识梳理(一) IOC
1 写在前面 Spring框架是在大一的时候学习的,但是经过几个项目下来发现自己只不过会用某些常用的东西,对于Spring家族,虽然现在大都使用Spring Boot开发,但是我发现Spring框架的 ...
- Spring AOP 知识整理
通过一个多月的 Spring AOP 的学习,掌握了 Spring AOP 的基本概念.AOP 是面向切面的编程(Aspect-Oriented Programming),是基于 OOP(面向对象的编 ...
- MyBatis框架知识整理
MyBatis框架 一.介绍: MyBatis实际上是Ibatis3.0版本以后的持久化层框架[也就是和数据库打交道的框架]! 和数据库打交道的技术有: 原生的JDBC技术---> Spring ...
- Flex Cairngorm框架知识整理
简介: Cairngorm是一个开源的Flex项目,为FLex提供了一个类似MVC的体系结构框架,它是Flex RIA开发的最好框架之一.使用Cairngorm框架可以大大提高开发和维护的效率. Ca ...
- Spring 框架学习整理
JDBC操作数据库的基本入门中存在什么问题? * 导致驱动注册两次是个问题,但不是严重的. * 严重的问题:是当前类和mysql的驱动类有很强的依赖关系. * 当我们没有驱动类的时候 ...
随机推荐
- [转] 以后再有人问你selenium是什么,你就把这篇文章给他
本文转自:https://blog.csdn.net/TestingGDR/article/details/81950593 写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论 ...
- MVC 中的@Html.Raw 的用法
@Html.Raw 定义:在有些情况下,需要显式地渲染一些不应该采用HTML编码的值,这时可以采用Html.Raw方法来保证该值不被编码:简单来说:就是使用了Html.Raw后,字符串会以一个html ...
- 学JAVA第十七天,接口与抽象方法
JAVA接口可以让代码更加有合理的规范性,就想一个项目小组,组长要负责把成员的代码整合,但是每个成员写的方式都是按照他们自己的想法来写的, 所以,整合起来就非常麻烦. 但是,如果我们的组长制作了一个接 ...
- vue学习记录①(vue-cli脚手架构建项目结构)
我们直接从vue的工程化开始入手. 在这里用git命令行搭建项目环境.(当然直接cmd命令行下也是一样的) git下载安装地址:https://www.git-scm.com/download/win ...
- css文字超出一行用点表示
1,css超出一行用点表示 white-space:nowrap; overflow:hidden; text-overflow:ellipsis; 2,css超出二行用点表示 overflow:hi ...
- HTML文档命名规则
HTML文档是展示Web前段开发工程师成果的最好表示方式,为了便于文档规范化管理,在编写HTML文档时,必须遵循HTML文件命名规则. HTML文档命名规则如下: (1)文档的扩展名为htm或者htm ...
- jsp内置对象-response对象
一.概念 隐含对象response是javax.servlet.HttpServletResponse接口实现类的对象.response对象封装了JSP产生的响应,用于响应客户端的请求,向客户端输出信 ...
- SpringIOC/DI(2)
2019-03-08/09:24:37 开发环境:IDEA 1.创建Spring项目 File--New--project--Spring--Creat empty Spring-config.xml ...
- OPPO A7x在哪里开启usb调试模式的详细经验
当我们使用Pc连接安卓手机的时候,如果手机没有开启Usb调试模式,Pc则没法成功读到我们的手机,这时我们需要想办法将手机的Usb调试模式开启,这里我们讲解OPPO A7x如何开启Usb调试模式的方法. ...
- 学习RenderScript,以此来修改LiveWallpaper
先留个坑,花5天的时间来填满.