`

spring系统学习笔记

    博客分类:
  • j2ee
 
阅读更多
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本身实现了其扩展点来达到了它想要的特性功能

分享到:
评论

相关推荐

    Spring框架学习笔记

    这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...

    springcloud学习笔记.pdf

    Spring Cloud 学习笔记 本笔记主要介绍了从单体架构到微服务架构的演变过程,以及 Spring Cloud 中的微服务架构搭建。下面是本笔记的详细知识点总结: 一、单体架构 单体架构是指整个系统只有一个工程,打包往往...

    Spring Cloud 学习笔记.pdf

    Spring Cloud是一套微服务架构下的分布式系统解决方案,提供了在分布式系统环境下快速构建一些常见模式的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式...

    SpringCloud学习笔记

    【SpringBoot核心特性】 SpringBoot是Spring框架的一个扩展,它旨在简化Spring应用程序的开发过程,...这份学习笔记涵盖了SpringBoot的基础特性和SpringCloud的负载均衡实践,对于深入理解这两个技术有极大的帮助。

    马士兵老师spring框架学习笔记

    马士兵老师是知名的Java教育专家,他的Spring框架学习笔记深入浅出,对于初学者和进阶者来说都是一份宝贵的资源。这份笔记涵盖了Spring的核心概念、配置、AOP(面向切面编程)、DI(依赖注入)等关键知识点。 1. **...

    spring aop 学习笔记

    本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...

    spring指南学习笔记

    标题和描述均提到了“spring指南学习笔记”,这意味着文档聚焦于Spring框架的学习心得与关键概念。Spring是一个开源的Java企业级应用框架,以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect ...

    Spring学习笔记+学习源码.zip

    Spring框架是Java开发中的核心组件,它为应用程序提供了一个全面的基础设施,包括依赖注入(DI)、面向切面编程(AOP)以及...通过系统学习并结合实践,你将能够熟练地利用Spring框架构建高效、可维护的Java应用程序。

    Spring的学习笔记

    以下将详细介绍Spring学习笔记中的主要知识点。 **面向抽象编程** 面向抽象编程是一种设计原则,强调在代码中使用接口或抽象类,而不是具体实现类。这使得系统更具有灵活性,易于扩展和维护。在Spring框架中,我们...

    springcloud学习笔记.zip

    它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

    spring框架学习笔记

    本笔记将深入探讨Spring框架的核心概念和主要功能,帮助你全面理解并掌握这一强大的工具。 一、Spring概述 Spring是一个开源的Java平台,它提供了一个全面的编程和配置模型,用于现代Java应用。其核心是IoC容器,...

    Spring技术内幕 学习笔记

    《Spring技术内幕 学习笔记》是一份深入探讨Spring框架核心机制的学习资料,结合作者zzc1684在iteye博客上的博文,我们可以从中学习到Spring框架的多个重要知识点。Spring作为Java企业级应用开发的基石,其设计思想...

    javaSpring学习笔记

    这份学习笔记提供了详细而系统的教程和实践指南,帮助初学者快速入门,并带领已经有一定经验的开发者深入理解和应用Spring框架的各种功能和特性。 在“Java Spring学习笔记”中,你将找到对Spring框架的全面介绍,...

    Spring Boot 学习笔记完整教程.pdf

    Spring Boot是一种旨在简化新Spring应用的初始搭建以及开发过程的框架。它使用了特定的方式来配置Spring,使得开发者...随着学习的深入,开发者可以利用Spring Boot提供的强大功能,构建出更加稳定、高效的应用系统。

    Spring2.5学习笔记

    ### Spring2.5 学习笔记详解 #### 一、Spring 框架简介 Spring 是一个开源的轻量级 Java 开发框架,主要用于简化企业级应用的开发工作。Spring 提供了一系列强大的功能,比如控制反转 (Inversion of Control, IOC)...

    spring2.0学习笔记

    本学习笔记旨在深入探讨Spring 2.0的核心特性,帮助开发者更好地理解和运用这个强大的框架。 1. **依赖注入(Dependency Injection, DI)**:Spring 2.0加强了DI,允许开发者通过XML配置或注解来管理对象间的依赖...

    springcloud学习笔记.docx

    SpringCloud 是一个基于 Spring Boot 实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...

    spring学习笔记

    ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...

    springcloudtext_springcloud学习笔记_

    总的来说,“springcloudtext_springcloud学习笔记”涵盖了SpringCloud的关键组件,通过学习和实践这些示例,可以帮助我们更好地理解和掌握SpringCloud在微服务架构中的应用,提升我们的分布式系统开发能力。

    Spring学习笔记.doc

    ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **1.1 什么是Spring** Spring框架是一个开源的轻量级应用框架,主要用于简化企业级应用程序的开发过程。它的核心特性在于提供了一种灵活的方式来组织和...

Global site tag (gtag.js) - Google Analytics