Spring 的 Ioc 容器
所有的组件都是被动的( Passive),所有的组件初始化和调用都由容器负责。组件处在一个容器当中,由容器负责管理。
BeanFactory 根据配置文件确定容器中 bean 的实现,管理 bean 之间的依赖关系。
 
通常,对属性值为容器中其他 bean 的情况,推荐采用 ref 元素指定,而不是 value 元素。
 
 
Spring开发包介绍 – 核心开发包
在建立Spring工程的时候,需要引入Spring的开发包,否则无法建立Spring的开发和运行环境,以下简单介绍一下Spring的核心开发包的基本用途:
Spring Core
Spring Beans
Spring AOP
Spring Context
 
以下开发包文件虽不是Spring核心开发包,但是提供了各种企业级服务:
Spring Aspects
Spring Context Support
Spring Expression
Spring Framework Bom
Spring Instrument
Spring Instrument Tomcat
Spring JDBC
Spring JMS
 
Spring orm
Spring oxm
Spring Struts
Spring test
Spring tx
Spring web
Spring webmvc
Spring webmvc portlet
 
IoC概述 – IoC的注入类型
从注入方法上看,主要划分为三种类型:
构造函数注入
属性注入
接口注入
 
资源访问工具类
JDK所提供的访问资源的类并不能很好的满足各种底层资源的访问需求,因此,Spring设计了一个Resource接口,它为应用提供了更强大的访问底层资源的能力:
 
主要方法:
boolean exists()
boolean isOpen()
URL getURL()
File getFile()
InputStream getInputStream()
 
具体实现类:
ByteArrayResource
ClassPathResource
FileSystemResource
InputStreamResource
ServletContextResource
UrlResource
 
 
为了访问不同类型的资源,必须使用相应的Resource实现类,这是比较麻烦的,Spring提供了一个强大的加载资源的机制,能够自动识别不同的资源类型:
资源类型地址前缀:
classpath classpath:com/jike/bean.xml
File file:/com/jike/bean.xml
http:// http://www.jike.com/bean.xml
ftp ftp://www.jike.com/bean.xml
无前缀 com/jike/bean.xml
 
Ant风格的匹配符:
?:匹配文件名中的一个字符
*:匹配文件名中的任意字符
**:匹配多层路径
Ant风格的资源路径示例:
Classpath:com/t*st.xml
File:D:/conf/*.xml
Classpath:com/**/test.xml
Classpath:org/springframework/**/*.xml
 
 
BeanFactory和ApplicationContext的介绍
BeanFactory是Spring框架最核心的接口,它提供了高级IoC的配置机制。ApplicationContext建立在BeanFactory基础之上,提供了更多面向应用的功能,它提供了国际化支持和框架事件体系,更易于创建实际应用一般称BeanFactory为IoC容器,而称ApplicationContext为应用上下文:
 
BeanFactory和ApplicationContext的介绍 – BeanFactory的介绍
BeanFactory是一个类工厂,可以创建并管理各种类的对象,Spring称这些创建和管理的Java对象为Bean。在Spring中,Java对象的范围更加宽泛。接下来我们对BeanFactory的类体系结构以及装载初始化顺序进行说明:
类体系结构:
XmlBeanFactory
ListableBeanFactory
HierarhicalBeanFactory
ConfigurableBeanFactory
AutowireCapableBeanFactory
SingletonBeanFactory
BeanDefinitionRegistry
 
初始化顺序:
1、创建配置文件
2、装载配置文件
3、启动IoC容器
4、获取Bean实例
 
BeanFactory和ApplicationContext的介绍 – ApplicationContext的介绍
ApplicationContext由BeanFactory派生而来,提供了更多面向实际应用的功能。在BeanFactory中,很多功能需要以编程的方式方式实现,而在ApplicationContext中则可以通过配置的方式实现。接下来介绍一下ApplicationContext的实现类以及类体系结构:
具体实现类:
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
ConfigurableApplicationContext
 
扩展接口:
ApplicationEventPublisher
MessageSource
ReaourcePatternResolver
LifeCycle
 
和BeanFactory初始化相似,ApplicationContext的初始化也很简单,根据配置文件路径不同可以选择不同的实现类加载:
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
Bean的实例化问题
 
 
Bean的生命周期
Spring容器中的Bean拥有明确的生命周期,由多个特定的生命阶段组成,每个生命阶段都允许外界对Bean施加控制。在Spring中,我们从Bean的作用范围和实例化Bean时所经历的一系列阶段来描述Bean的生命周期:
BeanFactory中的Bean的生命周期
ApplicationContext中的Bean的生命周期
 
Bean的生命周期 – BeanFactory中的Bean的生命周期
 
如下通过一个图形化的方式进行描述BeanFactory中的Bean的生命周期:
 
 
Spring的AOP容器
 
org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
自动把map转换为son字符串
 
 
ApplicationContext: 实用的Bean工厂
如果说BeanFactory是spring的心脏,那么Application就是完整的身躯。ApplicationContext就是由BeanFactory派生出来的。
 
代理:
静态代理
jdk动态代理 项目中要有 一个拦截器实现 InvocationHandler
cglib动态代理 项目中要有 一个拦截器实现 MethodInterceptor
 
切面: log类、权限类、安全类
通知:切面中的方法
连接点:客户端调用哪个方法, 哪个方法就是连接点。
切入点:相当于条件,
 
可以通过切入点表达式,指定拦截哪些类的哪些方法; 给指定的类在运行的时候植入切面类代码。
切入点表达式:
 
 
织入:形成代理对象的方法的过程就称为织入。
 
什么是AOP(Aspect Oriented Programming),就是把反复使用的、非核心的代码提取出来。

Spring 学习笔记的更多相关文章

  1. 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  2. spring学习笔记(一) Spring概述

    博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言. 在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring ...

  3. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

  4. Spring学习笔记2——表单数据验证、文件上传

    在上一章节Spring学习笔记1——IOC: 尽量使用注解以及java代码中,已经搭建了项目的整体框架,介绍了IOC以及mybatis.第二节主要介绍SpringMVC中的表单数据验证以及文件上传. ...

  5. 不错的Spring学习笔记(转)

    Spring学习笔记(1)----简单的实例 ---------------------------------   首先需要准备Spring包,可从官方网站上下载.   下载解压后,必须的两个包是s ...

  6. 【Spring学习笔记-MVC-15.1】Spring MVC之异常处理=404界面

    作者:ssslinppp       异常处理请参考前篇博客:<[Spring学习笔记-MVC-15]Spring MVC之异常处理>http://www.cnblogs.com/sssl ...

  7. 【Spring学习笔记-MVC-13.2】Spring MVC之多文件上传

    作者:ssslinppp       1. 摘要 前篇文章讲解了单文件上传<[Spring学习笔记-MVC-13]Spring MVC之文件上传>http://www.cnblogs.co ...

  8. 【Spring学习笔记-MVC-9】SpringMVC数据格式化之日期转换@DateTimeFormat

    作者:ssslinppp       1. 摘要 本文主要讲解Spring mvc数据格式化的具体步骤: 并讲解前台日期格式如何转换为java对象: 在之前的文章<[Spring学习笔记-MVC ...

  9. 【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

    作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MV ...

  10. 【Spring学习笔记-MVC-4】SpringMVC返回Json数据-方式2

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

随机推荐

  1. cnblogs博客申请完毕,以后再这里安家落户

    cnblogs博客申请完毕,以后再这里安家落户,之前的博客就不转载了,好好搞技术,安稳过日子.

  2. SecureCRT显示乱码的解决办法

    下面来看看SecureCRT的显示出现乱码这种情况.比如: 现在我们重新设置一下 设置下图中的配置 1.选择字符编码为UTF-8. 2.设置字符集为GB2312后保存好后确认退出. 3.再次测试一下.

  3. node.js定时任务 node-schedule

    先安装 node-schedule npm install node-schedule //1:确定时间 //例如:2014年2月14日,15:40执行 var schedule = require( ...

  4. mysql 累加求和

    ; SELECT temp.*,(@csum := total + @csum) as csums from ( ) as total,month(openedDate) as date from z ...

  5. 捷微jeewx , 免费开源(java)微信公众账号管家系统发布

    JeeWx, 微信管家平台,简称"捷微". 捷微是一款免费开源的JAVA微信公众账号开发平台.  平台介绍: 一.捷微Jeewx简介 Jeewx是一个开源.高效.敏捷的微信开发平台 ...

  6. APP-8.2-Postman应用

    用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具.今天给大家介绍的这款网页调试工具不仅可以 ...

  7. C#--构造函数的理解

    说白了构造函数就是用来初始化类的数据成员{因为C#语言具有类型安全的特质-->不能使用没有初始化的变量)} 在这里引用一下别人的总结,我觉得挺好的: 构造函数是一种特殊的成员函数,它主要用于为对 ...

  8. Delphi 中的颜色常量及效果图

    颜色名称   颜色效果   Hex HTML clBlack   $000000 #000000 clMaroon   $000080 #800000 clGreen   $008000 #00800 ...

  9. Idiom: a Lot on my Plate

    Idiom: a Lot on my Plate Share Tweet Share Tagged With: Idioms I’ve got a lot on my plate.  American ...

  10. bug提单规范

    一.提单模板 标题:[项目组][模块][子模块][发生原因]问题简要描述描述:[预置条件] 有就写清楚,没有就写无[操作步骤]1.XXXXX2.XXXXXX3.XXXXX[实际结果] XXXXX[预期 ...