码迷,mamicode.com
首页 > 编程语言 > 详细

2018-03-29 Spring之旅

时间:2018-03-30 00:12:26      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:切面   关联   com   16px   应用   work   jndi   垃圾回收   beans   

不积跬步,无以至千里;不积小流,无以成江海。

                          -- 荀子

  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之旅

标签:切面   关联   com   16px   应用   work   jndi   垃圾回收   beans   

原文地址:https://www.cnblogs.com/dandelZH/p/8673180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!