spring框架系统学习
http://developer.51cto.com/art/201006/205212.htm
spring详解-----AOP的深刻理解
http://developer.51cto.com/art/201105/262534.htm
Spring从菜鸟到高手
http://tonyaction.blog.51cto.com/227462/42039
java熔岩博客
http://lavasoft.blog.51cto.com/62575/d-4
--以下是具体笔记》
Spring就是面向Bean的编程 bean在Spring中作用就像Object对OOP的意义一样,没有对象的概念就像没有面向对象编程,Spring中没有Bean也就没有Spring存在的意义
我们用Spring的原因是什么,想想你会发现原来Spring解决了一个非常关键的问题他可以让 把对象之间的依赖关系转而用配置文件来管理
前面吧Bean比作一场演出中的演员的话,那Context就是这场演出的舞台背景,而Core应该就是演出的道具了
对Context来说他就是要发现每个Bean之间的关系,为它们建立这种关系并且要维护好 这种关系。所以Context就是一个Bean关系的集合,这个关系集合又叫Ioc容器
其实Core就是发现、建立和维护每 个Bean之间的关系所需要的一些列的工具,从这个角度看来,Core这个组件叫Util更能让你理解。
Bean组件在Spring的org.springframework.beans包下。这个包下的所有类主要解决了三件事:
SpringBean的创建时典型的工厂模式,他的顶级接口是BeanFactory
当Spring成功解析你定义的一个节点后,在Spring的内部他就被转化 成BeanDefinition对象。以后所有的操作都是对这个对象完成的。
Bean的解析过程非常复杂,功能被分的很细
Context在Spring的org.springframework.context包下,他实际上就是给Spring提供一个运行时的环境,用以保存各个对象的状态
ApplicationContext是Context的顶级父类 ApplicationContext继承了BeanFactory,这也说明了Spring容器中运行的主体对象是Bean
总体来说ApplicationContext必须要完成以下几件事:
◆标识一个应用环境
◆利用BeanFactory创建Bean对象
◆保存对象关系表
◆能够捕获各种事件
Core组件作为Spring的核心组件,他其中包含了很多的关键类,其中一个重要组成部分就是定义了资源的访问方式。这种把所有资源都抽象成一个接口的方式很值得在以后的设计中拿来学习
获取资源文件:Resource 接口继承了InputStreamSource接口,这个接口中有getInputStream方法
加载资源文件:ResourceLoader接口完成 他的默认实现是DefaultResourceLoader。
Context是把资源的加载、解析和描述工作委托给了ResourcePatternResolver(继承他)类来完成
Ioc容器实际上就是Context组件结合其他两个组件共同构建了一个Bean关系网,
AbstractApplicationContext.refresh方法就是构建整个Ioc容器过程的完整的代码,了解了里面的每一行代码基本上就了解大部分Spring的原理和功能了
prepareRefresh();
ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();//创建bean
prepareBeanFactory(beanFactory); //添加一些Spring本身需要的一些工具类
try
{ //下面三行对Spring的功能扩展性起作用
postProcessBeanFactory(beanFactory);
invokeBeanFactoryPostProcessors(beanFactory);//主要是获取实现BeanFactoryPostProcessor接口的子类。并执行它的postProcessBeanFactory方法 它的参数是beanFactory,说明可以对beanFactory做修改
registerBeanPostProcessors(beanFactory)//执行用户自定义的操作。
initMessageSource(); //后面的几行代码是 初始化监听事件和对系统的其他监听者的注册
initApplicationEventMulticaster();
onRefresh();
registerListeners();
finishBeanFactoryInitialization(beanFactory); //下面就是Bean的实例化代码
finishRefresh();
FactoryBean,可以说Spring一大半的扩展的功能都与这个Bean有关,这是个特殊的Bean他是个工厂Bean,可以产生Bean的Bean
如果是普通的Bean就直接创建他的实例,是通过调用getBean方法
然而在Spring内部这个Bean的实例对象是FactoryBean,通过调用这个对象的getObject方 法就能获取用户自定义产生的对象,从而为Spring提供了很好的扩展性
我们把Ioc容器比作一个箱子,这个箱子里有若干个球的模子,可以用这些模子来造很多种不同的球,还有一个造这些球模的机器,这个机器可以产生球模。那么他们的对应关系就是BeanFactory就是 那个造球模的机器,球模就是Bean,而球模造出来的球就是Bean的实例。那前面所说的几个扩展点又在什么地方呢?BeanFactoryPostProcessor对应到当造球模被造出来时,你将有机会可以对其做出设 当的修正,也就是他可以帮你修改球模。而InitializingBean和DisposableBean是在球模造球的开始和结束阶段,你可以完成一些预备和扫尾工作。
Ioc它实际上就是为你构建了一个魔方,Spring为你搭好了骨骼架构,这个魔方到底能变出什么好的东西出来,这必须要有你的参与。那我们怎么参与?这就是前面说的要了解Spring中那有些扩展点 ,我们通过实现那些扩展点来改变Spring的通用行为。至于如何实现扩展点来得到我们想要的个性结果,Spring中有很多例子,其中AOP的实现就是 Spring本身实现了其扩展点来达到了它想要的特性功能
分享到:
相关推荐
去年工作之余,系统学习整理了一遍springBoot,SpringCloud,文档中有学习的代码仓库,springCloud的每一个组件整理,组件使用案例等等,1积分意思一下啦
它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
这份学习笔记提供了详细而系统的教程和实践指南,帮助初学者快速入门,并带领已经有一定经验的开发者深入理解和应用Spring框架的各种功能和特性。 在“Java Spring学习笔记”中,你将找到对Spring框架的全面介绍,...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...
此笔记由本人跟随尚学堂教师一步一讲解梳理出来的 网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。 API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理...
基于ssm的基于云的学习笔记系统代码 | 基于云的学习笔记系统 | bs | java | ssm | spring | springmvc | mybatis | 代码 | 系统 | 网站 | 毕设 | 项目 1、技术栈:微信小程序,springboot,uniapp,vue,ajax,...
本人在学习java的时候也是看的狂神视频,确实讲的不错,系统的讲述了spring的使用。在自学的过程中,小生不才,整理了一点狂神的笔记同大家分享,这是狂神说Spring的全部笔记及代码,后续还会有springmvc、mybatis、...
spring课堂笔记,适合初学者系统的了解并学习spring相关知识。内附有简单spring代码
spring认证考试完全笔记,列有所有的SPRING重要知识点,疑点的详细解释,对于想系统学习SPRING的朋友很有帮助。
4、然后会们会遵循一个流行的系统架构风格 RESTful 来开发我们应用程序中的增删改查的功能。 主要内容 一、Spring Boot入门 1、spring boot 简介 2、idea和maven 3、项目构建启动 4、RESTful URL 二、Spring Boot ...
java SSH框架架构学习_笔记.zip java SSH框架架构学习_笔记.struts,spring,hibernate. IOC,AOP,JDBC,编写个留言管理系统网站
首页模块,优秀笔记模块,最新笔记模块,学习笔记模块。 学习计划模块,学习问题模块,收藏笔记模块。 后台管理模块 管理员的登陆,注销。 学习笔记管理,学习计划管理,学习问题管理,笔记评论管理。
积分管理系统java源码 ...储备力量:介绍深入系统化学习 Spring Cloud 所预备的理论和技术储备。架构方面,如:面向服务架构(SOA)、微服务架构、事件驱动架构。技术方面,如:Java 8、Spring Framework