欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • Spring IoC源码精讲/软件开发源码精讲系列
      • 作者:王涛|责编:安妮//薛阳
      • 出版社:清华大学
      • ISBN:9787302601319
      • 出版日期:2022/09/01
      • 页数:396
    • 售价:39.92
  • 内容大纲

        本书从Spring IoC核心技术的使用开始讲解,具备充分的Spring IoC使用说明,并且对Spring IoC核心源码进行分析。
        本书分为22章,主要内容包括SpringXML模式中XML文档的验证、XML资源读取、Spring默认标签的解析、自定义标签解析、各类资源对象注册和生命周期,以及Spring注解模式中的注解元数据、注解模式的启动和注解模式下Bean的注册等。本书可以帮助读者快速掌握Spring IoC容器的基本使用及Spring IoC相关的源码逻辑。
        本书的源码分析在大部分情况下遵循测试用例优先,尽可能保证源码现象可复现。
        本书适合具有一定Java编程基础和对Spring框架有基本开发能力的读者。
  • 作者介绍

  • 目录

    第1章  Spring容器环境搭建及基本使用
      1.1  Spring容器环境搭建
      1.2  Spring基本代码编辑
      1.3  SpringIoC核心类
      小结
    第2章  IoC资源读取及注册
      2.1  XML文档验证
        2.1.1  认识XML验证模式
        2.1.2  Spring中XML的验证
      2.2  Document对象获取
      2.3  BeanDefinition注册
        2.3.1  doRegisterBeanDefinitions流程
        2.3.2  parseBeanDefinitions分析
        2.3.3  parseDefaultElementSpring原生标签的处理
        2.3.4  import标签解析
        2.3.5  alias标签解析
        2.3.6  bean标签解析
        2.3.7  自定义标签解析概述
      小结
    第3章  自定义标签
      3.1  创建自定义标签环境搭建
        3.1.1  编写XSD文件
        3.1.2  编写NamespaceHandler实现类
        3.1.3  编写BeanDefinitionParser实现类
        3.1.4  编写注册方式
        3.1.5  测试用例的编写
      3.2  自定义标签解析
        3.2.1  NamesapceHandler和BeanDefinitionParser之间的关系
        3.2.2  获取命名空间地址
        3.2.3  NamespaceHandler对象获取
        3.2.4  getHandlerMappings获取命名空间的映射关系
        3.2.5  NamespaceHandler的获取
        3.2.6  NamespaceHandler的init方法
        3.2.7  NamespaceHandler缓存的刷新
        3.2.8  解析标签BeanDefinitionParser对象准备
        3.2.9  解析标签parse方法调用
      小结
    第4章  别名注册和BeanDefinition注册
      4.1  别名注册测试环境搭建
      4.2  别名注册接口
      4.3  SimpleAliasRegistry中注册别名的实现
      4.4  别名换算真名
      4.5  BeanDefinition注册
      4.6  DefaultListableBeanFactory中存储BeanDefinition的容器
      4.7  DefaultListableBeanFactory中的注册细节
        4.7.1  BeanDefinition的验证
        4.7.2  容器中存在BeanName对应的BeanDefinition的处理
        4.7.3  容器中不存在BeanName对应的BeanDefinition的处理
        4.7.4  BeanDefinition的刷新处理
      4.8  BeanDefinition的获取

      小结
    第5章  bean标签解析
      5.1  创建bean标签解析环境
        5.1.1  编写SpringXML配置文件
        5.1.2  编写beannode对应的测试用例
      5.2  parseBeanDefinitionElement方法处理
        5.2.1  parseBeanDefinitionElement第一部分处理
        5.2.2  parseBeanDefinitionElement第二部分处理
        5.2.3  parseBeanDefinitionElement第三部分处理
      5.3  BeanDefinition装饰
      5.4  BeanDefinition细节
        5.4.1  AbstractBeanDefinition属性
        5.4.2  RootBeanDefinition属性
        5.4.3  ChildBeanDefinition属性
        5.4.4  GenericBeanDefinition属性
        5.4.5  AnnotatedGenericBeanDefinition属性
      小结
    第6章  Bean的生命周期
      6.1  Java对象的生命周期
      6.2  浅看Bean生命周期
      6.3  初始化Bean
        6.3.1  无构造标签
        6.3.2  构造标签中的index模式和name模式
        6.3.3  Spring中的实例化策略
      6.4  Bean属性设置
        6.4.1  BeanWrapper创建
        6.4.2  BeanWrapper属性设置
        6.4.3  CachedIntrospectionResults对象介绍
        6.4.4  PropertyValue对象介绍
        6.4.5  最终的数据设置
      6.5  Bean生命周期值Aware接口
      6.6  BeanPostProcessor#postProcessBeforeInitialization
      6.7  InitializingBean接口和自定义initmethod方法
      6.8  BeanPostProcessor#postProcessAfterInitialization
      6.9  Bean的摧毁
        6.9.1  DefaultSingletonBeanRegistry中的摧毁
        6.9.2  DefaultListableBeanFactory中的摧毁
      小结
    第7章  Bean的获取
      7.1  Bean获取方式配置
      7.2  Bean获取的测试环境搭建
      7.3  doGetBean分析
        7.3.1  BeanName转换
        7.3.2  尝试从单例容器中获取
        7.3.3  从FactoryBean接口中获取实例
        7.3.4  尝试从父容器中获取
        7.3.5  BeanName标记
        7.3.6  非FactoryBean的单例对象创建
        7.3.7  非FactoryBean的原型对象创建
        7.3.8  既不是单例模式也不是原型模式的非FactoryBean创建

        7.3.9  类型转换器中获取Bean
      7.4  循环依赖
        7.4.1  Java中的循环依赖
        7.4.2  Spring中的循环依赖处理
      小结
    第8章  SpringXML模式下容器的生命周期
      8.1  SpringXML模式下容器的生命周期测试环境搭建
      8.2  XmlBeanFactory分析
      8.3  FileSystemXmlApplicationContext分析
        8.3.1  父上下文处理
        8.3.2  配置文件路径解析
        8.3.3  刷新操作
        8.3.4  关闭方法分析
      8.4  ClassPathXmlApplicationContext分析
      8.5  SpringXML关键对象附表
      8.6  初识LifecycleProcessor
      8.7  LifecycleProcessor测试环境搭建
      8.8  start方法分析
      8.9  stop方法分析
      8.10  LifecycleGroup相关变量
      8.11  BeanPostProcessor注册
      8.12  BeanFactoryPostProcessor方法调用
      小结
    第9章  Spring注解模式
      9.1  注解模式测试环境搭建
      9.2  basePackages模式启动
        9.2.1  scan方法分析
        9.2.2  doScan方法分析
        9.2.3  处理单个BeanDefinition
      9.3  componentClasses模式启动
      小结
    第10章  Spring配置类解析
      10.1  parse方法分析
      10.2  processConfigurationClass方法分析
      10.3  doProcessConfigurationClass方法分析
      10.4  处理各类注解
        10.4.1  处理@Component注解
        10.4.2  处理@PropertySource和@PropertySources注解
        10.4.3  处理@ComponentScans和@ComponentScan注解
        10.4.4  处理@Import注解
        10.4.5  处理@ImportResource注解
        10.4.6  处理@Bean注解
      10.5  处理父类配置
      小结
    第11章  ConfigurationClassPostProcessor分析
      11.1  初识ConfigurationClassPostProcessor
      11.2  ConfigurationClassPostProcessor测试用例搭建
      11.3  postProcessBeanDefinitionRegistry方法分析
        11.3.1  容器内已存在的Bean进行候选分类
        11.3.2  候选BeanDefinitionHolder的排序

        11.3.3  BeanName生成器的创建
        11.3.4  初始化基本环境信息
        11.3.5  解析候选Bean
        11.3.6  注册ImportBean和清理数据
      11.4  postProcessBeanFactory方法分析
      小结
    第12章  DeferredImportSelectorHandler分析
      12.1  初识DeferredImportSelectorHandler
      12.2  DeferredImportSelectorHandler测试环境搭建
      12.3  handler方法分析
      12.4  DeferredImportSelectorGroupingHandler分析
      12.5  processImports方法分析
      小结
    第13章  ConfigurationClassBeanDefinitionReader分析
      13.1  ConfigurationClassBeanDefinitionReader测试环境搭建
      13.2  ConfigurationClassBeanDefinitionReader构造函数
      13.3  loadBeanDefinitions方法分析
      13.4  TrackedConditionEvaluator分析
      13.5  loadBeanDefinitionsForConfigurationClass方法分析
      13.6  loadBeanDefinitionsForBeanMethod方法分析
      13.7  registerBeanDefinitionForImportedConfigurationClass方法分析
      13.8  loadBeanDefinitionsFromImportedResources方法分析
      13.9  loadBeanDefinitionsFromRegistrars方法分析
      小结
    第14章  Spring元数据
      14.1  认识MetadataReaderFactory
      14.2  SimpleMetadataReaderFactory分析
      14.3  CachingMetadataReaderFactory分析
      14.4  注解元数据读取工厂总结
      14.5  初识MetadataReader
      14.6  MetadataReader接口实现类说明
        14.6.1  SimpleAnnotationMetadataReadingVisitor成员变量
        14.6.2  SimpleAnnotationMetadata成员变量
        14.6.3  SimpleMethodMetadata成员变量
        14.6.4  MergedAnnotationsCollection成员变量
        14.6.5  TypeMappedAnnotation成员变量
        14.6.6  AnnotationTypeMappings成员变量
        14.6.7  ClassMetadataReadingVisitor成员变量
        14.6.8  AnnotationMetadataReadingVisitor成员变量
      14.7  类元数据接口说明
      14.8  StandardClassMetadata对象分析
      14.9  注解元数据基础认识
      14.10  Java中注解数据获取
      14.11  ScopeMetadataResolver分析
        14.11.1  ScopeMetadata分析
        14.11.2  AnnotationScopeMetadataResolver分析
      小结
    第15章  Spring事件
      15.1  Spring事件测试环境搭建
      15.2  Spring事件处理器注册

        15.2.1  事件处理器实例创建后
        15.2.2  事件处理器实例摧毁前
      15.3  Spring事件推送和处理
      小结
    第16章  占位符解析
      16.1  基本环节搭建
      16.2  XML的解析
      16.3  外部配置的读取
      16.4  字符串占位符解析
        16.4.1  resolveStringValue分析
        16.4.2  resolvePlaceholders分析
        16.4.3  resolveRequiredPlaceholders分析
        16.4.4  BeanDefinitionVisitor#visitBeanDefinition分析
      小结
    第17章  Spring中的转换服务
      17.1  初识Spring转换服务
      17.2  ConversionServiceFactoryBean对象的实例化
        17.2.1  afterPropertiesSet方法分析
        17.2.2  GenericConversionService对象创建
        17.2.3  注册转换服务
        17.2.4  ConversionServiceFactory.registerConverters分析
      17.3  转换过程分析
        17.3.1  ConversionService分析
        17.3.2  handleResult分析
        17.3.3  getConverter分析
        17.3.4  ConversionUtils.invokeConverter分析
        17.3.5  handleConverterNotFound分析
      17.4  脱离Spring实现转换服务
      小结
    第18章  MessageSource源码分析
      18.1  MessageSource测试环境搭建
      18.2  MessageSource实例化
      18.3  getMessage方法分析
        18.3.1  resolveCodeWithoutArguments方法分析
        18.3.2  resolveCode方法分析
      小结
    第19章  资源解析器
      19.1  资源解析器测试环境搭建
      19.2  ResourcePatternResolver类图分析
      19.3  PathMatchingResourcePatternResolver构造器分析
      19.4  getResource方法分析
      19.5  getResources方法分析
        19.5.1  findPathMatchingResources方法分析
        19.5.2  findAllClassPathResources方法分析
      小结
    第20章  BeanName生成策略
      20.1  AnnotationBeanNameGenerator分析
        20.1.1  AnnotatedBeanDefinition类型的BeanName生成策略
        20.1.2  非AnnotatedBeanDefinition类型的BeanName生成策略
      20.2  FullyQualifiedAnnotationBeanNameGenerator分析

      20.3  DefaultBeanNameGenerator分析
      小结
    第21章  条件注解
      21.1  条件注解测试环境搭建
      21.2  条件注解分析
      小结
    第22章  Spring排序注解
      22.1  排序注解测试环境搭建
      22.2  OrderComparator.sort方法分析
      小结