spring知识放送——压箱底的干货!干货!干货!

不啰嗦,直接上!!!

一、Spring 的特点

轻量级 控制反转 面向切面 容器 框架集合


二、 Spring 核心组件


三、 Spring 常用模块


四、Spring 主要包

五、 Spring 常用注解

bean 注入与装配的的方式有很多种,可以通过 xml,get set 方式,构造函数或者注解等。简单易 用的方式就是使用 Spring 的注解了,Spring 提供了大量的注解方式。


六、Spring 第三方结合


七、 Spring IOC 原理

(1)概念

Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化 Bean 并建立 Bean 之间的依赖关系。 Spring 的 IoC 容器在完成这些底层工作的基础上,还提供 了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务。

(2) Spring 容器高层视图

Spring 启动时读取应用程序提供的 Bean 配置信息,并在 Spring 容器中生成一份相应的 Bean 配 置注册表,然后根据这张注册表实例化 Bean,装配好 Bean 之间的依赖关系,为上层应用提供准备就绪的运行环境。其中 Bean 缓存池为 HashMap 实现


(3)IOC 容器实现

BeanFactory-框架基础设施

BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身;ApplicationContext 面向使用

Spring 框架的开发者,几乎所有的应用场合我们都直接使用 ApplicationContext 而非底层

的 BeanFactory。

  1. Spring 配置文件中每一个节点元素在 Spring 容器里都通过一个 BeanDefinition 对象表示, 它描述了 Bean 的配置信息。而 BeanDefinitionRegistry 接口提供了向容器手工注册 BeanDefinition 对象的方法。

1.1..1.1.2 BeanFactory 顶层接口

  1. 位于类结构树的顶端 ,它最主要的方法就是 getBean(String beanName),该方法从容器中 返回特定名称的 Bean,BeanFactory 的功能通过其他的接口得到不断扩展:

1.1..1.1.3 ListableBeanFactory

  1. 该接口定义了访问容器中 Bean 基本信息的若干方法,如查看 Bean 的个数、获取某一类型 Bean 的配置名、查看容器中是否包括某一 Bean 等方法;

1.1..1.1.4 HierarchicalBeanFactory 父子级联

  1. 父子级联 IoC 容器的接口,子容器可以通过接口方法访问父容器; 通过 HierarchicalBeanFactory 接口, Spring 的 IoC 容器可以建立父子层级关联的容器体系,子 容器可以访问父容器中的 Bean,但父容器不能访问子容器的 Bean。Spring 使用父子容器实 现了很多功能,比如在 Spring MVC 中,展现层 Bean 位于一个子容器中,而业务层和持久 层的 Bean 位于父容器中。这样,展现层 Bean 就可以引用业务层和持久层的 Bean,而业务 层和持久层的 Bean 则看不到展现层的 Bean。

1.1..1.1.5 ConfigurableBeanFactory

  1. 是一个重要的接口,增强了 IoC 容器的可定制性,它定义了设置类装载器、属性编辑器、容器初始化后置处理器等方法;

1.1..1.1.6 AutowireCapableBeanFactory 自动装配

  1. 定义了将容器中的 Bean 按某种规则(如按名字匹配、按类型匹配等)进行自动装配的方法;

1.1..1.1.7 SingletonBeanRegistry 运行期间注册单例 Bean

  1. 定义了允许在运行期间向容器注册单实例 Bean 的方法;对于单实例( singleton)的 Bean 来说,BeanFactory 会缓存 Bean 实例,所以第二次使用 getBean() 获取 Bean 时将直接从 IoC 容器的缓存中获取 Bean 实例。Spring 在 DefaultSingletonBeanRegistry 类中提供了一 个用于缓存单实例 Bean 的缓存器,它是一个用 HashMap 实现的缓存器,单实例的 Bean 以 beanName 为键保存在这个 HashMap 中。

1.1..1.1.8 依赖日志框框

  1. 在初始化 BeanFactory 时,必须为其提供一种日志框架,比如使用 Log4J, 即在类路径下提 供 Log4J 配置文件,这样启动 Spring 容器才不会报错。

ApplicationContext 面向开发应用

ApplicationContext 由 BeanFactory 派 生 而 来 , 提 供 了 更 多 面 向 实 际 应 用 的 功 能 。 ApplicationContext 继承了 HierarchicalBeanFactory 和 ListableBeanFactory 接口,在此基础 上,还通过多个其他的接口扩展了 BeanFactory 的功能。

  1. ClassPathXmlApplicationContext:默认从类路径加载配置文件13/04/2018 Page 123 of 283
  2. FileSystemXmlApplicationContext:默认从文件系统中装载配置文件
  3. ApplicationEventPublisher:让容器拥有发布应用上下文事件的功能,包括容器启动事 件、关闭事件等。
  4. MessageSource:为应用提供 i18n 国际化消息访问的功能;
  5. ResourcePatternResolver : 所 有 ApplicationContext 实现类都实现了类似于 PathMatchingResourcePatternResolver 的功能,可以通过带前缀的 Ant 风格的资源文 件路径装载 Spring 的配置文件。
  6. LifeCycle:该接口是 Spring 2.0 加入的,该接口提供了 start()和 stop()两个方法,主要 用于控制异步处理过程。在具体使用时,该接口同时被 ApplicationContext 实现及具体Bean 实现, ApplicationContext 会将 start/stop 的信息传递给容器中所有实现了该接 口的 Bean,以达到管理和控制 JMX、任务调度等目的。
  7. ConfigurableApplicationContext 扩展于 ApplicationContext,它新增加了两个主要 的方法: refresh()和 close(),让 ApplicationContext 具有启动、刷新和关闭应用上下 文的能力。在应用上下文关闭的情况下调用 refresh()即可启动应用上下文,在已经启动 的状态下,调用 refresh()则清除缓存并重新装载配置信息,而调用 close()则可关闭应用上下文。



原文地址:https://blog.51cto.com/14587687/2458190

时间: 2024-07-30 22:25:52

spring知识放送——压箱底的干货!干货!干货!的相关文章

【免费送课程+海量学习资料】计算机二级考试超级干货大放送~

亲爱的童鞋们~ 一年一度的计算机二级考试就在本月9月21号--23号正式开启啦,倒计时2周,我想现在的你一定是这个状态~ 小伙伴表担心,临阵磨枪不快也光,为了助你通过考试,我们为你的备考准备了超级干货: 干货1:价值99元的计算机等级考试二级<MS Office高级应用>视频课程,课程共20课时,14个小时. 干货2:海量的计算机二级备考资料 只要动一动手,干货你全部拿走~ 忍不住了,先透漏下,嘻嘻~ **话说怎么免费获取这些资料呢?只需2步: 第一步:分享以下"免费刷题小程序海报&

ym——android源码大放送(实战开发必备)

文件夹 PATH 列表 卷序列号为 000A-8F50 E:. │  javaapk.com文件列表生成工具.bat │  使用说明.txt │  免费下载更多源码.url │  目录列表.txt │ ├─android web应用 │      jqmDemo_static.zip │      jqmMobileDemo-master.zip │      jqmMobileDemo1_1-master.zip │      Location1014.rar │ ├─anko │      

IC卡解密从零开始学1 (也许会有2) 解密工具V2 V3大放送 By:lookyour

前段时间发了一个破解的PN532工具,详见 ===========================IC卡解密工具 PN532工具XP 爆破版http://www.52pojie.cn/thread-597896-1-1.html IC卡解密从零开始学2  解密工具PN532-mfoc-mfcuk-GUIhttp://www.52pojie.cn/thread-604402-1-1.html =========================有很多人私信和回复希望有个详细点的介绍... 好吧,本着

庆中秋、迎国庆,福利大放送!充值返金币!最高送20%!

知识改变命运,技术成就梦想,要赚钱先学习!可是管家们总是收到小伙伴们抱怨课程贵,囊中羞涩,这可肿么办呢? 这不续学院周年庆活动后,中秋节到来之际,又来一大波充值福利来袭~趁着中秋节和十一假期的到来,大小管家特地说服老板给大家发补贴!充值返金币,绝对不含糊,学员充充充,学院送送送~ 充值的金币可以在学院任意消费(购买课程.套餐.会员卡.培训班均适用哦)错过悔一年~~ [活动时间] 2015.9.22 0:00:00--2015.9.24 23:59:59 (限时3天优惠大放送!各位小伙伴一定要注意

102-一周活动放送-2018-10-22

1. 2018 CASPA Fall international delegation trip 简介: CASPA Fall Delegation Trip Date: 10/23/2018 to 10/31/2018 Description: Recruit high tech startups to join 2018 CASPA international Fall delegation trip; get the first hand information of China - 时间

十年磨一剑,霜刃未曾试——杀猪越货利器放送

这是南方七月一个风少雨多,杀猪越货的早晨. 混迹于IT圈多年,自制若干攻击利器,后门木马等,个人一直低调在用,基本上从未示众,借用唐朝贾岛同学的话说就是"十年磨一剑,霜刃未曾试.". 今早,就在今早,公布吧--所谓技术这东西,似乎.好像不能一辈子(尤其是在天朝):何况长江后浪推前浪,前浪必然挂在沙滩上:与其被挂,不如主动让路,做后来者的人梯,让生命成为桥梁(^_*).再次套用贾岛同学的话就是"今日把示君,谁有不平事?". 好了,废话和牢骚一大通,下面进入正题.今天公

珍藏好料开源放送: windows平台一个高性能、通用型的C++生产者/消费者架构模板

/* 生产者/消费者通用模板 特点: 高性能:采用多线程,多队列平衡的信号量等待模型,有效减少锁等待 可调节:可以根据实际应用环境调整队列数,最多可支持64个队列 使用简单,一个构造函数,一个生产函数,一个消费函数. */ #ifndef PANDC_H #define PANDC_H #include <vector> #include <deque> #include <Windows.h> #include <limits.h> using names

各大牛逼讲师的经典Jquery精品视频教程,大放送啦!!!(包括手机移动端JqueryWeb开发)!!!

各大牛逼讲师的经典Jquery精品视频教程,大放送啦!!!(包括手机移动端JqueryWbd开发)!!! [1]jQuery手机端开发视频教程篇 [10]扬中科JQuery基础教程.zip [15]Jquery基础视频教程 [8]炫丽效果教你做之jQuery实战 [3]曹鹏老师jQuery视频教程      下载链接见下面...............数不尽的资源等你来拿哦..... [1]jQuery手机端开发视频教程篇  链接: http://pan.baidu.com/s/1sjMcwwP

cocos2d-x 3.0游戏实例学习笔记 《跑酷》 完结篇--源代码放送

说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 OK,到昨天为止,我们已经将游戏基本上写完了,这里本来就是别人开源的东西,我这里重写,当然要发布源代码.那么这里有两种方式: 第一种:将我执行成功的整个项目打包,VS2012+win7下的,这样的方式就比較大,可是能够打开打开 Run/proj.win32/Run.sln 就能够啦 另外一种:就是我