Spring 实战,第一章笔记

1.1 简化Java开发

为了降低Java开发的复杂性,Spring采取了以下4中关键策略:

  • 基于POJO的轻量级和最小侵入性编程;
  • 通过以注入和面向接口实现松耦合;
  • 基于切面和惯例进行声明试编程;
  • 通过切面和模板减少样板式代码。

1.2 容纳Bean

在基于Spring的应用中,应用对象生存与Spring容器(container)中(容器是Spring框架的核心)。Spring容器负责创建对象,装配他们,配置他们并管理它们的整个命周期,从生存到死亡。

Spring容器并不是只有一个。Spring自带了多个容器实现,可以归为两种不同的类型:

  • bean工厂(由org.springframework.beans.factory.BeanFactory接口定义)是最简单的容器,提供基本的依赖注入支持
  • 应用上下文(由org.springframework.conetxt.ApplicationContext接口定义)基于BeanFactory构建,并提供应用框架级别的服务。

1.2.1 使用应用上下文

常用的Spring应用上下文:

  • AnnotationgConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文。

      ApplicationContext context = new AnnotationgConfigApplicationContext(Java配置类的.class)
    
  • AnnotationgConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web 应用上下文。

  • ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,吧应用上下文的定义文件作为类资源。

      ApplicationContext context = new ClassPathXmlApplicationContext(“项目中Spring配置文件的位置”)
    
  • FileSystemXmlApplicationContext:从文件系统下的一个或多个Xml配置文件中加载上下文定义。

      ApplicationContext context = new FileSystemXmlApplicationContext(“磁盘中Spring配置文件的位置”)
    
  • XmlWebApplicationContext: 从WEB应用下的一个或多个Xml配置文件中加载上下文定义。

1.2.2 bean的生命周期

  1. Spring对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将调用他们的postProcessBeforeInitialization()方法;
  7. 如果bean实现了InitializingBean接口,Spring将调用他们的afterPropertiesSet()方法。类似的,如果bean使用init-method生命了初始化方法,该方法也会被调用。
  8. 如果bean实现了BeanPostProcessor接口Spring将调用他们的postProcessAfterInitialization()方法;
  9. 此时,bean已经准备就绪,可以被应用程序使用了,他们将一直驻留在应用上下文中,直到该应用上下文被销毁;
  10. 如果bean实现了DisposableBean接口,Spring将调用它的destory()接口方法。 同样,如果bean使用destory-method声明了销毁方法,该方法也会被调用。

1.3 Spring模块

Spring框架由下列6个定义良好的模块分类组成:

Spring框架由6个定义良好的模块分类组成

1. Spring核心容器

容器是Spring框架最核心的部分,它管理着Spring应用中bean的创建、配置、和管理。在该模块中,包括了Spring BeanFactory,他为Spring提供依赖注入功能。基于BeanFactory,我们还会发现有多重Spring应用上下文的实现。

除了beanFactory和应用上下文,该模块也提供了许多企业服务,如:E-mail、JNDI访问、EJB集成和调度。

所有Spring拨快都构建于核心容器之上。

2. Spring Aop模块

在aop模块中,Spring对面向切面编程提供了丰富的支持,这个模块是Spring应用系统中开发切面的基础。与依赖注入一样,aop可以帮助应用对象解耦。借助于aop,可以将遍布系统的关注点(例如失误和安全)从他们所应用的对象中解耦出来

3. 数据访问与集成模块

使用JDBC变写代码通常会导致大量的样板式代码,例如获得数据库连接、创建语句、处理结果集到关闭数据库连接。Spring的JDBC和DAO模块抽象了这些样板式代码,使我们的数据库代码变得简单明。

还有诸如ORM框架,Spring没有尝试去创建自己的ORM解决方案,而是对许多ORM框架进行集成,如:Hibernate、MyBatis。

本模块同样包含了JMS,他会是消息以异步的方式与其他应用集成。

4.Web与远程调用模块

MCV模式是一种普遍被接受的构建web应用的方法,他可以帮助用户将界面逻辑与应用逻辑分离。

除了web应用,该模块还提供了多种构建与其他应用交互的远程调用方案,如集成的RMI、Hessian、Burlap、JAX-WS,同时Spring孩子带了一个远程调用框架:HTTP invoker。Spring还提供了暴露和使用REST API的良好支持。

5. Instrumentation模块

Spring的Instrumentation模块提供了为JVM添加代理的功能。具体来讲,他为Tomcat提供了一个织入代理,能够为Tomcat传递类文件,就像这些文件是被类加载器加载的一样。

6.测试模块

鉴于自测的重要性,Spring提供了测试模块以致力于Spring应用的测试。对于集成测试,该模块为加载Spring应用上下文中的bean集合以及与Spring上下文中的bean进行交互提供了支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值