《spring实战第四版》读书笔记-01

1. Spring的核心

1.1 Spring概念

 Spring是轻量级的开源JavaEE框架。Spring的两个核心特性:DIAOPDI能使各个组件保持松散耦合,而AOP可以将分布于各个组件之间的功能分离出来形成可重用的组件。Spring最根本的使命就是简化Java开发。为了实现这一目标,spring采取了以下四种关键策略:

  1. 基于POJO的轻量级和最小入侵性编程

    spring不会强迫使用者去改变POJO,使用装配的方式对Bean进行管理

    装配wiring创建应用组件之间协作的行为,就是将bean交给spring管理的过程。spring提供两种装配bean的方式,一种是基于xml装配,另一种是基于注解装配

    应用上下文ApplicationContextspring通过应用上下文装载bean并将同名组装起来。常用ClassPathXmlApplicationContext对象加载spring的配置文件,读取其中注册的JavaBean。

  2. 通过依赖注入和面向接口实现松耦合

    依赖注入。就像打针一样,需要打什么药就到针管中放入对应药,而不是说针管里面本身有药,要去找不同的针管。松散了针管和药之间的耦合度。

    依赖注入的两种方式:构造器注入set方法注入

  3. 基于切面和惯例进行声明式编程

    面向切面编程可以将分布于各个组件中的相同功能提取出来成为可重用的组件。AOP可以将可重用组件变成一个外壳,套在其他需要它的组件上面。这样的好处就是让其他组件具有更高的内聚性,让它着重去关系自己的核心功能。

    一般是将安全、事务、日志通过AOP与核心功能分离。

    比如骑士和呤游诗人的关系

  4. 通过切面和模版减少样板式代码

    切面可以将可重用的代码抽离出来,模版可以减少代码量,比如JdbcTemplate

1.2 IOC容器

 在基于spring的应用中,bean生存与spring容器中。spring容器负责创建、装配它们,配置并管理它们的整个生命周期。spring自带多个容器,可以归为两大类型:

  1. bean工厂:BeanFactory,是最简单的容器,提供基础的DI支持

  2. 应用上下文:ApplicationContext,基于BeanFactory构建,并提供应用框架级别的服务。spring自带了多种应用上下文,以下几种是用到频率比较多的:

    • AnnotationConfigApplicationContext:从一个或多个基于Java配置类中加载Spring应用上下文
    • AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载SpringWeb应用上下文
    • ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义
    • FileSystemXmlapplicationontext:从文件系统下单一个或多个xml配置文件中加载上下文定义
    • XmlWebApplicationContext:从web应用下的一个或多个XML配置文件中加载上下文定义

    其中最常用的就是ClassPathXmlApplicationContext

1.2.1 Bean的生命周期

  1. spring对bean进行实例化(创建bean实例)
  2. spring将值和bean的引用注入到bean对应的属性中(依赖注入)
  3. 若bean实现了BeanNameAware接口,Spring将bean的ID传递给setBeanName()方法
  4. 若bean实现了BeanFactoryAware接口,spring将调用setBeanFactory()方法,将BeanFactory容器实例传入
  5. 若bean实现了ApplicationContextAware接口,spring将调用setApplicationContext()方法,将bean所在的应用上下文引用传入进来
  6. 若bean实现了BeanPostProcessor接口,spring将调用postProcessBeforeInitializingBean()方法
  7. 若Bean实现了InitializingBean接口,spring将调用afterPropertiesSet()方法
  8. 若bean实现了BeanPostProcessor接口,spring将调用postProcessAfterInitialization()方法
  9. bean准备就绪,可以被使用
  10. 若bean实现了DisposableBean接口,spring将调用它的destory()方法

1.3 Spring生态圈

  1. Spring核心容器创建bean和理bean,对多种应用上下文的实现,提供企业服务,如Email、JNDI访问、EJB集成和调度
  2. Spring的AOP模块Spring对面向切面提供了丰富的支持
  3. 数据访问和集成spring抽象了模版式代码,使操作数据库的代码变得简单明了,还可以避免数据库资源关闭而引发的问题。同时spring提供了ORM(Object-Relational Mapping)模块,spring的ORM模块建立在DAO的支持之上,并未多个ORM框架提供了一种构建DAO的快捷方式,让spring更好的去集成这些ORM框架
  4. Web与远程调用SpringMVC框架
  5. Instrumentation:
  6. 测试:
  7. Spring PortfolioSpring Portfolio包括多个构建于核心Spring框架之上的框架和类库。概括的讲,spring portfolio几乎为每一个领域的Java开发都提供了spring编程模型
  8. Spring Web Flow建立于SpringMVC之上,它为基于流程的会话式Web应用提供了支持(比如购物车和向导功能)
  9. Spring Web Service:
  10. Spring SecuritySpring Security为Spring应用提供了声明式安全机制
  11. Spring Integration:
  12. Spring Batch
  13. Spring Data
  14. Spring Social
  15. Spring Mobile:
  16. Spring for Android:
  17. Spring Boot
posted @   鲨鱼辣椒侦探  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示