zoukankan      html  css  js  c++  java
  • 浅谈Spring

    参考文章:

    https://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/

    参考书籍:

    《SPRING技术内幕:深入解析SPRING架构与设计原理》

    《Spring源码深度解析》

    Spring是一个开源的轻量级的Java开发框架。Spring FrameWork中有两个重要的概念,IoC、AOP。

     使用Spring框架的好处是什么?

    • 轻量:Spring 是轻量的,基本的版本大约2MB。
    • 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
    • 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
    • 容器:Spring 包含并管理应用中对象的生命周期和配置。
    • MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
    • 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
    • 异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。

    什么是IoC?

    Ioc是Spring中实现Inversion of Control控制反转理念的容器,负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。我们传统对象的生命周期一般由引用对象进行管理(A→B),但这样不利于解耦、调试。所以出现了控制反转模式,通过中间添加一层容器负责创建管理对象,它反转了A→B的模式转为A←IOC→B的模式,利于程序解耦,这个容器就是IOC容器。

    单例Bean从缓存中获取:
    1:singletonObjects 1级缓存,用来保存BeanName和创建bean实例之间的关系
    2:earlySingletonObjects 2级缓存,用来保存BeanName和创建Bean实例间关系,与
    1级缓存的区别是2级缓存中的Bean在创建过程中也可被获取到。
    3:singletonFactories 3级缓存,保存BeanName和bean工厂的关系。

    实例化单例Bean首先从1级缓存获取,无则到2级缓存获取,无则到3级缓存获取,如果获取到
    则取出bean放入二级缓存并移出3级缓存中Factory。
    如果缓存中都没有则创建bean,1级缓存与2级缓存的区别是,1级缓存保存创建好的bean,2级缓存保存未完全创建完成的bean。

    IoC重要的类

    BeanFactory:IoC容器父类

    BeanDefinitionReader:

    。。。

    IoC容器启动过程:(有空拜读源码了解下)

    2、IoC容器的初始化,初始化在refresh()函数中

    1、BeanDefinition资源的定位,Spring用Resource接口统一对bean定义资源的读写操作,包括XML、类和其他类型的bean资源,资源的定位由ResourceLoader去完成。

    2、XXBeanDefinitionReader负责完成对资源的解析得到BeanDefinition实例,BeanDefinitionRegistry将实例BeanDefinition注册到IoC容器DefaultListableBeanFactory中,

    3、设置BeanFatory的后置处理,调用它,注册它。。。。

    4、实例化单例Bean,并且依赖注入,(BeanDefinitionResolver类)

    Bean生命周期中的接口

    什么是AOP?

    在OOP中,正是这种分散在各处且与对象核心功能无关的代码(横切代码)的存在,使得模块复用难度增加。AOP则将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),切面将那些与业务无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。

    解决循环依赖?

     3级缓存(上文已经说过)

  • 相关阅读:
    现在实习生做什么好找工作?
    MSsql数据库修改数据类型Float到decimal的问题处理
    首记,一种新的企业信息化平台开发方案——AgileEAS.NET框架
    在Winform中使用DataGirdView时的添加和删除操作
    如何通过AgileEAS.NET快速搭建属于你的企业应用(一)——解决方案的建立
    浅谈企业自主信息化开发模式
    AgileEAS开发中关于实体类和DataTable的取舍——用linq+orm来缩短你的开发周期
    如何通过AgileEAS.NET快速搭建属于你的企业应用(二)——智能版本升级和多数据库访问的分布式部署
    整站黑白页
    布局管理器
  • 原文地址:https://www.cnblogs.com/llsblog/p/10665966.html
Copyright © 2011-2022 走看看