第一章 Spring基础
第一章 Spring基础
1.1 Spring介绍
Spring是一个框架,框架是高度抽取、可重用的代码的一种设计。Spring就是多个可重用的模块的集合,从而形成一个领域的整体解决方案。
Spring是一个IOC(DI)和AOP容器框架
Spring的优良特性:
- 非侵入式:基于Spring开发的应用中的对象可以不依赖Spring的API
- 依赖注入:DI(Dependency Injection),控制反转**(IOC:invesion of control)**最经典的实现
- 面向切面编程:AOP(Aspect Oriented Programming)
- 容器:Spring是一个容器,因为它包含并且管理应用对象的生命周期,容器可以帮我们管理所有的组件(类)
- 组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用,在Spring中可以使用XML和Java注解注册对象
- 一站式:在IOC和AOP的基础之上可以整合各种企业应用的开源项目和优秀的第三方Jar包
1.2 Spring中的IOC和AOP
Spring的模块图:
从下到上依次为:
测试(Test):
Spring的单元测试模块
核心容器(Core Container):
IOC
-Beans:Spring Bean相关,如依赖查找、依赖注入
-Core:核心库
-Context:上下文
-Expression Language:表达式语言
Aop+Aspects(面向切面编程模块):
数据访问(Data Assess):
-JDBC:操作数据库的模块
-ORM(Object Relation Mapping):对象关系映射
-OXM(Object Relation Mapping) :对象XMl映射
-JMS:消息服务
-Transaction:事务
Web(开发Web应用的模块):
-web:webSocket
-Servlet:Servlet
-Portlet:
-Struts:
注意:Spring中的包很多,用到那个,就导入那个,导入不需要使用的包会降低性能
1.2.1 IOC
IOC是Inversion of control的缩写 ,翻译为控制反转,它不是什么技术,而是一种设计思想。
控制:在以前,我们是自己在对象内部通过new去创建对象,也就是程序主动去创建依赖对象。在Spring中,IOC容器来控制对象的创建。
反转:在以前,由我们去主动控制去获取依赖对象,也就是正转。在Spring中,由IOC容器来帮忙创建以及注入依赖对象,我们是被动的使用Spring注入的依赖对象,也就是反转。
1.2.2 DI
DI是英文Dependency Injection的缩写,翻译为依赖注入。
应用程序因为需要IOC容器来提供对象所需要的的外部资源,所以程序依赖IOC容器,同时,IOC容器知道某个组件运行时需要哪些其他组件(对象),然后通过反射的形式将容器中准备好的对象(利用反射给属性赋值)注入到这个组件中。
IOC的一个重点就是在系统运行中,动态的向某个对象提供它依赖的对象,这就是通过DI来实现的。
例如,我们经常会写这样的代码:
// 主动创建对象
getIceCola{Ice ice = new Ice("-2C");Cola cola = new Cloa(400);Cup cup = new Cup("大杯");Machin machin = new Machin("冰可乐机");return machin.makeIceCola(ice, cola, cup);
}
上面创建对象的方式就是主动式,上面的例子比较简单,设想一下,如果需要创建很多对象,且这些对象初始化需要很多变量,是不是会很麻烦。
在Spring中,采用的是被动式的创建对象,也就是对象的创建和控制权交给了Spring,我们是被动的来接收和使用Spring给我们提供的对象。当然,前提是需要配置好这些对象。
使用Spring之后,我们这样写代码:
// 主动创建对象
getIceCola{@AutowiredIce ice;@AutowiredCola cola;@AutowiredCup cup;@AutowiredMachin machin;return machin.makeIceCola(ice, cola, cup);
}
容器管理了所有的组件(有功能的类),上面的getIceCola也可以受容器管理。当容器发现BookServlet需要用到BookService类,它就会创建BookService对象,也就是说,之前,我们需要某个对象,我们需要主动的去new,但在Spring中,Spring发现我们需要某个类的对象时,它会自动帮我们创建,程序是被动的去接收IOC提供的对象。
第一章 Spring基础相关推荐
- 19年8月 字母哥 第一章 spring boot 2.x基础及概念入门 这里全部看完了 热部署没出来 第二章在前面2页 用热点公司网不行
http://springboot.zimug.com/1233100 文档 http://www.zimug.com/page/5 字母哥个人博客 11111 第一章 spring bo ...
- 第一章 Spring的简单剖析
第一章 Spring的简单剖析 简单的说Spring是什么呢?如果单从字面上理解它,可以解释为: 春天, 跃起, 弹性-.中国有句名言:"一年四季在于春".在字面可以想 ...
- 框架设计--第一章 Spring的基本应用--习题答案
摘要:微信搜索[三桥君] 课程介绍:"框架技术"是软件工程专业的核心课程,是本专业限选课,是Java 应用开发课程,是本专业学生就业的主要方向. 说明:框架设计其他章节的习题答案也 ...
- 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础
第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1 初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...
- [Spring 深度解析]第2章 Spring基础
第2章 ◄Spring基础► 在上一章节中,我们学习了Java的注解与反射,在这一章节我们将了解一下Spring框架,并学习Spring框架中重要的编程思想控制反转(IOC).面向切面编程(AOP ...
- 第一章计算机基础知识第一节,第一章 计算机基础知识 第一节
第一章计算机基础知识 第一节.了解计算机 尊敬的各位评委老师: 大家好!我今天说课的题目是<了解计算机>.我将从以下五方面来谈谈对这节课的设计:即说教材.学情分析.说教法和学法.说教学过程 ...
- 人工操作阶段计算机是如何工作的,第一章计算机基础概述全解.ppt
第一章计算机基础概述全解 1.2.3 汉字编码 汉字的编码 国标码:中文内码之一,汉字信息交换的标准编码.国标码是不可能在计算机内部直接采用.于是, 汉字的机内码采用变形国标码 . 国标码:作为转换为 ...
- 微型计算机基础 教案,第一章微型计算机基础知识新080902电子教案(153页)-原创力文档...
第一章 微型计算机基础知识;第一章? 微型计算机基础知识;§1.1 计算机中数的表示方法;1.1.1 进位计数制及各计数制间的转换;二进制数的特点; 十进制--符合人们的习惯二进制--便于物理实现十六 ...
- 萌新向Python数据分析及数据挖掘 第一章 Python基础 第三节 列表简介 第四节 操作列表...
第一章 Python基础 第三节 列表简介 列表是是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中的元素包括在方括号([])中,每个元素之间用逗号分割.列表是可变的数据类型, ...
最新文章
- Tomcat Jenkins iOS自动打包
- 记一次糟心的内网靶场实战
- MS-SQLSERVER--错用了LEN()函数
- Git操作常用的命令都在这里了
- python36安装numpy_安装numpy
- vsftpd 源码安装 linux/redhat
- create table as select性能测试
- eclipse安装一直卡在安装中_Eclipse软件安装包+安装教程
- 求一个任意实数c的算术平方根g_中考总复习实数知识点
- webpack打包样式代码去重
- 变送器故障码与解决办法剖析汇总
- 二元函数的洛必达法则
- 怎样去除抖音短视频的水印,快速去除视频水印的方法
- Android 项目正式签名打包教程
- CSS3 页面布局
- print 设置纸张的高度_祝贺! 2020珠峰高程测量登山队成功登顶!用Python计算一张纸对折多少次会超过珠峰高度?...
- 模仿探探(百合网,珍爱网)卡片左右滑动效果,滑动流畅,卡片view无限重生
- Linux命令中的箭头符号总结
- 【5分钟教你】3种实现验证码功能-数字短信验证码-图形验证码-滑动验证码
- react引入渲染markdown文件