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属性来控制容器后处理器的执行次序。
相关推荐
配置好Maven后,我们需要在`web.xml`中配置DispatcherServlet,它是SpringMVC的前端控制器,负责接收HTTP请求并分发到相应的处理器。同时,还要配置ContextLoaderListener,用于初始化Spring的全局...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。这个框架的核心是模型-视图-控制器(MVC)设计模式,它将应用程序的业务逻辑、数据处理和用户界面分离开来,使得开发过程...
css预处理器 css开发架构 css实战 小米官网 svg javascript es标准 模块化开发 webpack typescirpt ajax js开发框架 Vue nodejs 数据库 mysql oracle oracle基础 redis 数据处理 开发工具 jetbrains linux 其他
例如,Spring MVC中的DispatcherServlet就是一个前端控制器模式的实例,它负责接收请求并调度到相应的处理器。BeanFactory和ApplicationContext则是工厂模式的应用,用于创建和管理Bean。此外,Spring的AOP代理可以...
- **Spring框架**:IoC、AOP,Spring Boot,Spring MVC等。 - **MyBatis**:SQL映射,动态SQL,事务管理。 - **Maven或Gradle**:构建工具的使用和配置。 以上知识点涵盖了Java程序员面试的常见领域,对于准备...
1. Spring框架:依赖注入、AOP、SpringMVC、Spring Boot、Spring Cloud等。 2. MyBatis:ORM框架,动态SQL,Mapper接口的使用。 3. MVC模式:理解模型-视图-控制器的设计模式。 八、数据库 1. SQL语言:DQL、DML、...
3. 行为型模式:模板方法、策略、职责链、命令、解释器、迭代器、备忘录、状态、观察者、访问者。 八、Spring框架 1. IoC容器:Bean的生命周期,依赖注入。 2. AOP:切面编程,通知类型,自动代理。 3. Spring Boot...
比如,Spring框架大量使用了依赖注入(Dependency Injection)这一设计模式,它降低了组件之间的耦合度,提高了代码的可测试性。又如,Apache的Log4j日志系统采用了观察者模式,使得日志记录者和日志处理器之间保持...