第一章 Spring基础

1.1 Spring介绍

  • Spring是一个框架,框架是高度抽取、可重用的代码的一种设计。Spring就是多个可重用的模块的集合,从而形成一个领域的整体解决方案。

  • Spring是一个IOC(DI)和AOP容器框架

Spring的优良特性:

  1. 非侵入式:基于Spring开发的应用中的对象可以不依赖Spring的API
  2. 依赖注入DI(Dependency Injection),控制反转**(IOC:invesion of control)**最经典的实现
  3. 面向切面编程AOP(Aspect Oriented Programming)
  4. 容器:Spring是一个容器,因为它包含并且管理应用对象的生命周期,容器可以帮我们管理所有的组件(类)
  5. 组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用,在Spring中可以使用XML和Java注解注册对象
  6. 一站式:在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基础相关推荐

  1. 19年8月 字母哥 第一章 spring boot 2.x基础及概念入门 这里全部看完了 热部署没出来 第二章在前面2页 用热点公司网不行

    http://springboot.zimug.com/1233100   文档 http://www.zimug.com/page/5     字母哥个人博客 11111 第一章 spring bo ...

  2. 第一章 Spring的简单剖析

          第一章 Spring的简单剖析 简单的说Spring是什么呢?如果单从字面上理解它,可以解释为: 春天, 跃起, 弹性-.中国有句名言:"一年四季在于春".在字面可以想 ...

  3. 框架设计--第一章 Spring的基本应用--习题答案

    摘要:微信搜索[三桥君] 课程介绍:"框架技术"是软件工程专业的核心课程,是本专业限选课,是Java 应用开发课程,是本专业学生就业的主要方向. 说明:框架设计其他章节的习题答案也 ...

  4. 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础

    第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1    初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...

  5. [Spring 深度解析]第2章 Spring基础

    第2章 ◄Spring基础► ​ 在上一章节中,我们学习了Java的注解与反射,在这一章节我们将了解一下Spring框架,并学习Spring框架中重要的编程思想控制反转(IOC).面向切面编程(AOP ...

  6. 第一章计算机基础知识第一节,第一章 计算机基础知识 第一节

    第一章计算机基础知识 第一节.了解计算机 尊敬的各位评委老师: 大家好!我今天说课的题目是<了解计算机>.我将从以下五方面来谈谈对这节课的设计:即说教材.学情分析.说教法和学法.说教学过程 ...

  7. 人工操作阶段计算机是如何工作的,第一章计算机基础概述全解.ppt

    第一章计算机基础概述全解 1.2.3 汉字编码 汉字的编码 国标码:中文内码之一,汉字信息交换的标准编码.国标码是不可能在计算机内部直接采用.于是, 汉字的机内码采用变形国标码 . 国标码:作为转换为 ...

  8. 微型计算机基础 教案,第一章微型计算机基础知识新080902电子教案(153页)-原创力文档...

    第一章 微型计算机基础知识;第一章? 微型计算机基础知识;§1.1 计算机中数的表示方法;1.1.1 进位计数制及各计数制间的转换;二进制数的特点; 十进制--符合人们的习惯二进制--便于物理实现十六 ...

  9. 萌新向Python数据分析及数据挖掘 第一章 Python基础 第三节 列表简介 第四节 操作列表...

    第一章 Python基础 第三节 列表简介 列表是是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中的元素包括在方括号([])中,每个元素之间用逗号分割.列表是可变的数据类型, ...

最新文章

  1. Tomcat Jenkins iOS自动打包
  2. 记一次糟心的内网靶场实战
  3. MS-SQLSERVER--错用了LEN()函数
  4. Git操作常用的命令都在这里了
  5. python36安装numpy_安装numpy
  6. vsftpd 源码安装 linux/redhat
  7. create table as select性能测试
  8. eclipse安装一直卡在安装中_Eclipse软件安装包+安装教程
  9. 求一个任意实数c的算术平方根g_中考总复习实数知识点
  10. webpack打包样式代码去重
  11. 变送器故障码与解决办法剖析汇总
  12. 二元函数的洛必达法则
  13. 怎样去除抖音短视频的水印,快速去除视频水印的方法
  14. Android 项目正式签名打包教程
  15. CSS3 页面布局
  16. print 设置纸张的高度_祝贺! 2020珠峰高程测量登山队成功登顶!用Python计算一张纸对折多少次会超过珠峰高度?...
  17. 模仿探探(百合网,珍爱网)卡片左右滑动效果,滑动流畅,卡片view无限重生
  18. Linux命令中的箭头符号总结
  19. 【5分钟教你】3种实现验证码功能-数字短信验证码-图形验证码-滑动验证码
  20. react引入渲染markdown文件

热门文章

  1. 公网传输技术之SRT协议解析(上)
  2. 面向在线教育业务的流媒体分发演进
  3. 剑指offer之36-40题解
  4. Java多线程之线程池详解
  5. JVM之类加载器ClassLoader
  6. H.264(MPEG-4 AVC)级别(Level)、DPB 与 MaxDpbMbs 详解
  7. ./ffmpeg: error while loading shared libraries: libavdevice.so.57
  8. map/multimap用法详解
  9. Intel Edision入门
  10. ubuntu 网络知识总结