`

Spring 备忘 (四) -- Spring 后处理器

 
阅读更多

Spring 备忘 (四) -- Spring 后处理器

 

20. Spring 后处理器 - Bean 后处理器

    bean后处理器,是一种特殊的bean,这种bean不对外提供服务,甚至无需id属性,

    负责对其容器中其他bean提供后处理.

    

    这种bean是对所有的(或一大批)其他bean进行处理,

    区别于:

      bean单独配置init-method或者实现InitializingBean(仅仅对当前的bean做处理)

      bean单独配置destory-method属性 或者 实现 DisposableBean接口(仅仅对当前的bean做处理)

    

    bean后处理器必须实现 BeanPostProcessor接口,包含下面方法:

    Object postProcessBeforeInitialization(Object bean,String name) Throws BeansException

    Object postProcessAfterInitialization(Object bean,String name) Throws BeansException

    第一个参数是即将进行后处理的bean实例,第二个参数是该bean的名字

    这两个方法会在bean初始化前,后分别被调用

    一个类MyBeanPostProcessor实现了BeanPostProcessor接口

    

    配置片段:

    <bean id="steelAxe" class="xxx.xxx.SteelAxe" />

    

    <!-- Chinese类还实现了InitializingBean 接口 -->

    <bean id="chinese" class="xxx.xxx.Chinese" init-method="init">

      <!-- 设置注入 -->

      <property name="axe" ref="steelAxe" />

      <property name="name" value="依赖注入的值" />  

    </bean>

    

    <!-- 配置bean的后处理器可以无需指定id,但这里还是指定了 -->

    <bean id="beanPostProcessor" class="xxx.xxx.MyBeanPostProcessor" />

    

    几种方法的调用顺序:

    (1) 注入依赖关系(set方法之类的)

    (2) 调用后处理器接口方法 postProcessBeforeInitialization

    (3) 调用具体Bean的InitializingBean接口方法afterPropertiesSet()

    (4) bean配置的init-method中指定的方法

    (5) 调用具体Bean的DisposableBean接口方法destroy()

    (6) 调用bean配置的destroy-method中指定的方法(P599)

    (7) 调用Bean后处理器接口的 postProcessAfterInitialization(P616)

    

    

    使用BeanFactory作为Spring容器需要手动注册Bean后处理器,

    使用ApplicationContext则会自动注册Bean后处理器.

    

21. Spring 后处理器 -- 容器 后处理器

    

    容器后处理器处理容器本身.

    实现BeanFactoryPostProcessor接口,方法为:

    postProcessorBeanFactory(ConfigurableListableBanFactory beanFactory)

    该方法对Spring容器进行后处理,并不完全替换容器,所以不需要返回值.

    

    使用BeanFactory作为Spring容器需要手动注册 容器 后处理器,

    使用ApplicationContext则会自动注册 容器 后处理器.

    

    配置: 将 容器 后处理器,作为普通bean 配置到xml配置文件中.(P618)

    

    两种容器配置器(P620):

      属性占位符配置器(PropertyPlaceholderConfigurer)

      重写占位符配置器(PropertyOverrideConfigurer)

    

    参考: http://blog.csdn.net/confirmaname/article/details/9466055

 

程序会自动搜索容器中实现了BeanFactoryPostProcessor接口的类,并将它注册成容器后处理器。

Spring已经提供了如下几个常用的容器后处理器:

① PropertyPlaceholderConfigurer:属性占位符配置器。

② PropertyOverrideConfigurer:重写占位符配置器。

 CustomAutowireConfigurer:自定义自动装配的配置器。

 CustomScopeConfigurer:自定义作用域的配置器。

从上面的介绍可以看出,容器后处理器通常用于对Spring容器进行处理,并且总是在容器实例化任何其他的Bean之前,读取配置文件的元数据,并有可能修改这些元数据。

如果有需要,程序可以配置多个容器后处理器,多个容器后处理器可设置order属性来控制容器后处理器的执行次序。

    

  

分享到:
评论

相关推荐

    SpringMVC项目搭建过程备忘

    配置好Maven后,我们需要在`web.xml`中配置DispatcherServlet,它是SpringMVC的前端控制器,负责接收HTTP请求并分发到相应的处理器。同时,还要配置ContextLoaderListener,用于初始化Spring的全局...

    SringMVC 注解标记备忘录

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。这个框架的核心是模型-视图-控制器(MVC)设计模式,它将应用程序的业务逻辑、数据处理和用户界面分离开来,使得开发过程...

    java8集合源码分析-memobook:备忘录

    css预处理器 css开发架构 css实战 小米官网 svg javascript es标准 模块化开发 webpack typescirpt ajax js开发框架 Vue nodejs 数据库 mysql oracle oracle基础 redis 数据处理 开发工具 jetbrains linux 其他

    java设计模式

    例如,Spring MVC中的DispatcherServlet就是一个前端控制器模式的实例,它负责接收请求并调度到相应的处理器。BeanFactory和ApplicationContext则是工厂模式的应用,用于创建和管理Bean。此外,Spring的AOP代理可以...

    Java程序员面试题

    - **Spring框架**:IoC、AOP,Spring Boot,Spring MVC等。 - **MyBatis**:SQL映射,动态SQL,事务管理。 - **Maven或Gradle**:构建工具的使用和配置。 以上知识点涵盖了Java程序员面试的常见领域,对于准备...

    java后端-面试笔记和面试资料

    1. Spring框架:依赖注入、AOP、SpringMVC、Spring Boot、Spring Cloud等。 2. MyBatis:ORM框架,动态SQL,Mapper接口的使用。 3. MVC模式:理解模型-视图-控制器的设计模式。 八、数据库 1. SQL语言:DQL、DML、...

    张孝祥正在整理Java就业面试题大全

    3. 行为型模式:模板方法、策略、职责链、命令、解释器、迭代器、备忘录、状态、观察者、访问者。 八、Spring框架 1. IoC容器:Bean的生命周期,依赖注入。 2. AOP:切面编程,通知类型,自动代理。 3. Spring Boot...

    设计模式代码实现+源码设计模式分析

    比如,Spring框架大量使用了依赖注入(Dependency Injection)这一设计模式,它降低了组件之间的耦合度,提高了代码的可测试性。又如,Apache的Log4j日志系统采用了观察者模式,使得日志记录者和日志处理器之间保持...

Global site tag (gtag.js) - Google Analytics