粗谈Spring——从执行顺序来看说Spring

原创 2007年09月28日 17:02:00
   1.Spring的加载(实例化)
      如果不与Struts整合的话,Spring的加载是在Web程序的web.xml中配置的,在web.xml 中有两种选择,一种是ContextLoaderListener,另一种是ContextLoaderServlet。
      如果与Struts进行整合,则Spring的加载是在struts-config.xml中配置的。
   2.容器后处理器
      在容器实例化之后可以对Spring容器进行一些操作,这个通过实现接口BeanFactoryPostProcessor接口来实现,该接口有一个方法void postProcessorBeanFactory(ConfigurableListableBeanFactory beanFactory)。这个接口有两个很有用的实现类,是Spring已经实现好的,它们是PropertyPlaceholderConfigurer(属性占位符配置器)和PropertyOverrideConfigurer(另一种属性占位符配置器)。
   3.与Spring容器的交互
      对容器的处理操作结束以后,我们就能和Spring容器进行交互了,我们可以实现FactoryBean,FactoryBeanAware接口等方法获取BeanFactory实例,然后用之。
   4.配置bean和依赖关系
      这包括配置依赖,注入属性值,注入field值,注入方法返回值,bean的继承。这些配置的过程中还包括配置强制初始化bean(depends-on),自动装配(autowire),依赖检查(dependency-check),这三项都是bean的属性(不是子元素)。
   5.对容器中的bean实例化的管理——bean后处理器
      bean后处理器必须实现BeanPostProcessor接口,该接口中有两个方法,一个是Object postProcessBeforeInitialization(Object bean,String name) throws BeansException 和 Object postProcessAfterInitialization(Object bean,String name) throws BeansException,前一个方法是在实例化之前对该bean进行处理,后一个方法是在实例化之后对该bean进行处理。
   6.对bean生命周期的管理
      对bean生命周期的管理有两个时机:一,在注入依赖关系之后;二,在即将销毁bean之前。
      在注入依赖关系之后管理有两种方式:一,使用init-method属性;二,InitialingBean接口,它只有一个void afterPropertiesSet() throws Exception方法。
      在bean销毁之前管理时也有两种方式:一,使用destroy-method属性;二,DisposableBean接口,它只有一个void destroy() throws Exception方法。
   这里要说明的是,如果同时配了属性,也实现了方法。则先执行接口的方法,再执行配置的属性指定的方法。
   如果既用了bean后处理器,有对bean的生命周期进行管理,则执行的顺序是:Object postProcessBeforeInitialization(Object bean,String name) throws BeansException,void afterPropertiesSet() throws Exception,init-method,Object postProcessAfterInitialization(Object bean,String name) throws BeansException。
   7.创建bean实例
      创建bean实例有三种方法:
      1.调用构造器创建一个bean实例。
     2.BeanFactory调用某个类的静态工厂方法创建bean。
     3.BeanFactory调用实例工厂方法创建bean。
   8.依赖注入
      注入的顺序是先实例化本bean(它需要容器向它注入其它的bean),在实例化用来向本bean注入的bean,然后执行注入。当然,这种顺序是可以改变的,可以用强制实例化bean来改变这种顺序。强制实例化bean在前面已经说过。
      注入的方式有两种,一种是设值注入,另一种是构造注入。
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Spring3中@Autowired注入的顺序

一、问题 问题;Spring3中在Bean中多个属性,多个方法@Autowired的顺序是怎样执行的? Demo @Component public class MyBean { @Val...

Spring框架下类的初始化顺序

序言   之前的已经分析过在不使用框架的情况下,类中各个部分的初始化或执行顺序,后来我在开发中使用了Spring,发现初始化顺序与之前的稍有不同,特别是其初始化以xml配置文档作为驱动,xml中先定...

spring注入一个实体bean的集合并指定顺序

本文向一个bean中注入一个接口实体bean的集合,并指定各个实体bean在集合中的顺序,然后在被注入bean中按顺序调用集合中的bean实体中的方法。核心实现时在实体类上使用@Order注解来定制各...

菜鸟学习Spring——SpringMVC注解版前台向后台传值的两种方式

一、概述。        在很多企业的开法中常常用到SpringMVC+Spring+Hibernate(mybatis)这样的架构,SpringMVC相当于Struts是页面到Contorll...
  • gwblue
  • gwblue
  • 2015-01-21 11:34
  • 108058

Spring bean 加载执行顺序

问题来源: 有一个bean为A,一个bean为B。想要A在容器实例化的时候的一个属性name赋值为B的一个方法funB的返回值。 如果只是在A里单纯的写着: private B b;...

Spring容器中的Bean几种初始化方法和销毁方法的先后顺序

Spring 容器中的 Bean 是有生命周期的,Spring 允许 Bean 在初始化完成后以及销毁前执行特定的操作。下面是常用的三种指定特定操作的方法: 通过实现InitializingBe...

【第六章】 AOP 之 6.7 通知顺序 ——跟我学spring3

如果我们有多个通知想要在同一连接点执行,那执行顺序如何确定呢?Spring AOP使用AspectJ的优先级规则来确定通知执行顺序。总共有两种情况:同一切面中通知执行顺序、不同切面中的通知执行顺序。 ...

【第六章】 AOP 之 6.7 通知顺序 ——跟我学spring3

转自:http://sishuok.com/forum/blogPost/list/2474.html 如果我们有多个通知想要在同一连接点执行,那执行顺序如何确定呢?Spring AOP使用As...

AOP 之 6.7 通知顺序 ——跟我学spring3

http://jinnianshilongnian.iteye.com/blog/1423489        如果我们有多个通知想要在同一连接点执行,那执行顺序如何确定呢?Sp...

【第六章】 AOP 之 6.7 通知顺序 ——跟我学spring3

如果我们有多个通知想要在同一连接点执行,那执行顺序如何确定呢?Spring AOP使用AspectJ的优先级规则来确定通知执行顺序。总共有两种情况:同一切面中通知执行顺序、不同切面中的通知执行顺序。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)