Spring 复习笔记01
Spring 框架
1. core:整个Spring框架构建在Core核心模块上,它是整个框架的的基础。
2. AOP:AOP模块提供了一个轻便但功能强大强大的AOP框架,让我们可以以AOP的形式增强各POJO的能力。
3. 数据访问和事务管理的抽象和集成服务。
4. 为了简化各种JavaEE服务(像JNDI、JMS以及JavaMail等)的使用,Spring框架为我们提供了针对这些JavaEE服务的集成服务。
5. WEB模块:在该模块中,Spring框架提供了一套自己的WEB MVC框架,职责分明。Spring WEB MVC并不排斥现有的其他WEB框架,像Struts、WebWork以及JSF等;Spring的web框架都为它们提供了集成支持。

IOC的基本概念:
1. IOC全称Inversion of Control,中文通常翻译为"控制反转",它还有一个别名叫做依赖注入(Dependency Injection)
2. 通常情况下,被注入对象会直接依赖于被依赖对象。但是,在IOC的场景中,二者之间通过IOC Service Provider来打交道,所有的被注入对象和依赖对象现在由IOC Service Provider统一管理。被注入
对象需要什么,直接跟IOC Service Provider招呼一声,后者就会把相应的依赖对象注入到被注入对象中从而达到IOC Service Provider为注入对象服务的目的。IoC Service Provider在这里就是通常的
IoC容器所充当的角色。从被注入对象的角度看,与之前直接寻求依赖对象相比,依赖对象的取得方式发生了反转,控制也从被注入对象转到了IOC Service Provider那里。
3. 三种依赖注入的方式:构造方法注入(constructor injection)、setter方法注入(setter injection)以及接口注入(interface injection,不提倡接口注入这种使用方式)。
4. 三种注入方式的比较:
1). 接口注入:从注入方式的使用上来说,接口注入是现在不甚提倡的一种方式,基本处于"退役状态"。因为它强制被注入对象实现不必要的接口,带有侵入性。
2). 构造方法注入:这种注入方式的优点是,对象在构造完成之后,即已进入就绪状态,可以马上使用。缺点是,当依赖对象比较多的时候,构造方法的参数列表会比较长。
3). setter方法注入:因为方法可以命名,所以setter方法注入在描述性上要比构造方法注入好一些。另外,setter方法可以被继承,允许设置默认值,而且有良好的IDE支持。缺点是独享无法在构造完成后
马上进入就绪状态。
掌握大局的IoC Service Provider
1. IoC Service Provider的职责,主要有两个:业务对象的构建管理和业务对象间的依赖绑定。
2. 如何管理对象之间的依赖关系:
1). 直接编码方式
2). 配置文件方式
3). 元数据方式(注解)
Spring IoC容器之BeanFactory
1. Spring提供了两种容器类型:BeanFactory和ApplicationContext
1). BeanFactory:基础类型IoC容器,提供完整的IoC服务支持。如果没有特殊指定,默认采用延迟初始化策略(lazy-load)。只有当客户端对象需要访问容器中的某个受管理对象的时候,才对该受管理对象进行
初始化以及依赖注入操作。所以,相对来说,容器启动初期速度较快,所需要的资源有限。对于资源有限,并且功能要求不是很严格的场景,BeanFactory是比较合适的IoC容器选择。
2). ApplicationContext:ApplicationContext在BeanFactory的基础上构建,是相对比较高级的容器实现,除了拥有BeanFactory的所有支持,ApplicationContext还提供了其他高级特性,比如事件发布、
国际化支持等,这些会在后面详述。ApplicationContext所管理的对象,在该类型容器启动之后,默认全部初始化并绑定完成。所以,相对于BeanFactory来说,ApplicationCotnext要求更多的系统资源,
同时因为在启动时就完成所有初始化,容器启动时间较之BeanFactory也会长一些。在那些系统资源充足,并且要求更多功能的场景中,ApplicationContext类型的容器是比较合适的选择。
ApplicationContext间接继承自BeanFactory。
2. BeanFactory的对象注册与依赖绑定方式:BeanFactory接口只定义如何访问容器内管理的Bean的方法,各个BeanFactory的具体实现类负责具体Bean的注册以及管理工作。BeanDefinitionRegistry接口定义
抽象了Bean的注册逻辑。通常情况下,具体的BeanFactory实现类会实现这个接口来管理Bean的注册。
1). 直接编码的方式
2). 外部配置文件方式:Spring的IoC容器支持两种配置文件格式:Properties文件格式和XML文件格式。
3). 注解方式
3. BeanFactory的XML之旅
3.1 <beans>和<bean>
1). <beans>是XML配置文件中的最顶层元素,它下面可以包含0或1个<description>和多个<bean>以及<import>或者<alias>,它拥有相应的属性:
a. default-lazy-init:默认值为false。用来标志是否对所有的<bean>进行延迟初始化。
b. default-autowire:可以取值no、byName、byType、constructor以及autodetect。默认值为no,如果使用自动绑定的话,用来标志全体bean使用哪一种默认绑定方式。
c. default-dependency-check:可以取值为none、objects、simple以及all,默认值为none,即不做依赖检查。
e. default-init-method:如果所辖的<bean>按照某种规则,都有同样名称的初始化方法的话,可以在这里统一制定这个初始化方法名,而不用在每一个<bean>上都重复单独指定。
f. default-destroy-method:与defalut-init-method相对应,如果所辖的bean有按照某种规则使用了相同名称的对象销毁方法,可以通过这个属性统一指定。
3.2 <description>、<import>和<alias>
1). <description>:可以通过<description>在配置的文件中指定一些描述性的信息。通常情况下,该元素是省略的。当然,如果愿意,<description>随时可以为我们效劳。
2). <import>:通常情况下,可以根据模块功能或者层次关系,将配置信息分门别类地放到多个配置文件中。可以在这个主要的配置文件中通过<import>元素对其所依赖的配置文件进行引用。
这个功能用处不大,因为通常可以同时加载多个配置。
3). <alias>:可以通过<alias>为某些<bean>起一些别名,通常情况下是为了减少输入。
Spring 复习笔记01的更多相关文章
- Spring MVC 复习笔记01
1. springmvc框架 1.1 什么是springmvc spring mvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.spring mvc是一个 ...
- mybatis 复习笔记01
本文内容转自传智播客笔记 1. 问题总结 1). 数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能. 设想:使用数据库连接池管理数据库连 ...
- Spring 学习笔记01
以一个论坛登陆模块来讲解如何使用spring 登陆功能虽然简单,但是模块虽然很小,但是基本包括了一般的web应用的操作.涵盖了持久层数据访问(数据库相关操作).业务层事务管理(数据库操作回滚等).展现 ...
- Spring学习笔记——01 控制反转
想一下之前学的Java,如果某个类需要引用某个对象,则需要手动new一个出来.这样带来的一个问题就是,若被引用的类发生改动或被删除,则引用它的所有类都会报错.因为两个类耦合在一起了.解决的办法就是不由 ...
- JAVA复习笔记01
学了一学期的JAVA,临近期末,整理了一些JAVA考试中需要掌握的点,记录在这里. 1.编译多个JAVA文件,运行程序 (1) javac .java .java java Main (2) java ...
- Python复习笔记01
(1)计算机常识 计算机:硬件(运算器,控制器,存储器,输入设备,输出设备)软件 (系统软件, 应用软件) 二进制 整数存储 文件单 位换算 1Byte = 8bit 1KB = 1024Byte 1 ...
- Servlet&JSP复习笔记 01
1. Servlet 含义:服务器端的小程序,它只是服务器中的一部分. Servlet Little 标准:Sun公司制定的一种用来扩展Web服务器功能的组件规范. a. 扩展web服务器功能:扩展w ...
- Spring笔记01(基础知识)
1.基础知识 01.Spring:轻量级Java EE开源框架,它是由Rod Johnson为了解决企业应用程序开发的复杂性而创建. 02.目标:实现一个全方位的整合框架,实现“一站式”的企业应用开发 ...
- SaToken学习笔记-01
SaToken学习笔记-01 SaToken版本为1.18 如果有排版方面的错误,请查看:传送门 springboot集成 根据官网步骤maven导入依赖 <dependency> < ...
随机推荐
- MFC之常用控件(四)
常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控件.列表控件.树形控件和进度条控件等等.本节教程先来讲解静态文本框的使用. 控件的通知消息 在将静态文本框的使用之 ...
- 在RHEL5.2 64bit下编译安装log4cxx错误
apache-log4cxx.0.10.0 依赖于apache-apr和apache-apr-utils两个包 先安装他们俩,然后编译log4cxx,发现make失败,错误如下 ronized.o . ...
- angularJs之模块化
<!DOCTYPE HTML><html ng-app="myApp"><head><meta http-equiv="Cont ...
- C#中数组、ArrayList和List三者的区别
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. ...
- A股中为什么有涨幅超过10%的
在A股规定涨跌幅10%的正常交易日中,某些股票的涨跌幅却超出或没达到10%的,原因是因为A股的交易中最小的价格“申报单位为0.01元”,就是说某些股票不管什么价格都不会刚刚好是10%,它只能“取最近于 ...
- php 如何进入mysql数据库
我是初学者,有两台电脑,进入数据库通用的方法直接找mysql.exe,如下例: F:\Program Files\wamp\bin\mysql\mysql5.5.20\bin
- dd命令使用详解
dd命令使用详解 http://www.cnblogs.com/qq78292959/archive/2012/02/23/2364760.html 1.命令简介 dd 的主要选项: 指定数字的地方若 ...
- Power-BI助顾得医药济世康民
公司简介成立于 2011 年 9 月 24 日,是一家主要以医院销售为主,集批发.配送.售后服务于一体的商业公司.现有药品储备面积 16000 平方米,开户医院 52 家,营销网络辐射山西省境内部分县 ...
- Android --Search界面样式
Lay_Weight 权重属性的使用 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...
- jQuery基础修炼圣典—DOM篇(一)
一.DOM节点的创建 1.创建节点及节点属性 通过JavaScript可以很方便的获取DOM节点,从而进行一系列的DOM操作.但实际上一般开发者都习惯性的先定义好HTML结构,但这样就非常不灵活了. ...