2018-03-29 Spring之旅
Posted 大梦几千秋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-03-29 Spring之旅相关的知识,希望对你有一定的参考价值。
不积跬步,无以至千里;不积小流,无以成江海。
-- 荀子
1.Spring容器
在基于Spring的应用中,应用对象生存于Spring容器中。Spring容器负责创建对象,装配它们,配置它们并管理他们的整个生命周期,从生存到死亡。
Spring容器使用DI管理构成应用的组件,它会创建相互协作的组件之间的关联。Spring自带多个容器实现,可归为两种不同类型:
1)bean工厂,由org.springframework.beans.factory.BeanFactory接口定义,是最简单的容器,提供基本的DI支持。
2)应用上下文,由org.springframework.context.ApplicationContext接口定义,基于BeanFactory构建,并提供应用框架级别的服务。
2.使用应用上下文创建Spring容器
Spring自带多种类型的应用上下文,下面最常见的几种类型:
1)AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文。
2)AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文。
3)ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。
4)FileSystemXmlApplicationContext:从文件系统下的一个或多个XML配置文件中加载上下文定义。
5)XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上下文定义。
3.Spring容器中bean的生命周期
传统Java应用中,bean的生命周期很简单,从使用java关键字new进行bean 的实例化,然后接着使用bean,在到bean不再使用,最后由java垃圾回收器自动回收。
相比之下,Spring容器中bean的生命周期就显得相对复杂多了。
1)Spring对bean进行实例化(通过反射机制? 什么时候进行的呢?);
2)Spring将值和bean引用注入到bean对应的属性中(DI装配?);
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声明了销毁方法,该方法也会被调用。
4.Spring 模块分类
1)Spring核心容器管理者Spring应用中bean的创建、配置和管理。在该模块中,包括了Spring Bean工厂,它为Spring提供了DI的功能。基于bean工厂,还有多种Spring应用上下文的实现。除了bean工厂和应用上下文,该模块也提供了许多企业服务,如E-mail、JNDI访问、EJB集成和调度。
2)在AOP模块中,Spring对面向切面编程提供了丰富的支持。
3)在数据访问与集成模块。
a)Spring的JDBC和DAO模块抽象了样板式代码,在多种数据库服务的错误信息之上构建了一个语义丰富的异常层。
b)Spring的ORM模块建立在对DAO的支持上,并为多个ORM框架提供了一种构建DAO的简便方式,包括Hibernate、Java Persisternce API、Java Data Object和iBATIS SQL Maps。Spring的事务管理支持所有的ORM框架以及JDBC。
c)JMS(Java Message Service)之上构建的Spring抽象层,它会使用消息以异步方式与其它应用集成。
以上是关于2018-03-29 Spring之旅的主要内容,如果未能解决你的问题,请参考以下文章