本文整理自网络,侵删。
Spring——Bean 后置处理器
Bean 后置处理器允许在调用初始化方法前后对 Bean 进行额外的处理。
?BeanPostProcessor
?接口定义回调方法,你可以实现该方法来提供自己的实例化逻辑,依赖解析逻辑等。你也可以在 ?Spring
? 容器通过插入一个或多个 ?BeanPostProcessor
? 的实现来完成实例化,配置和初始化一个?bean
?之后实现一些自定义逻辑回调方法。
你可以配置多个 ?BeanPostProcessor
?接口,通过设置 ?BeanPostProcessor
?实现的? Ordered
?接口提供的? order
? 属性来控制这些? BeanPostProcessor
? 接口的执行顺序。
?BeanPostProcessor
? 可以对? bean
?(或对象)实例进行操作,这意味着 ?Spring IoC
? 容器实例化一个 ?bean
? 实例,然后 ?BeanPostProcessor
? 接口进行它们的工作。
注意:
?ApplicationContext
? 会自动检测由 ?BeanPostProcessor
? 接口的实现定义的 ?bean
?,注册这些? bean
? 为后置处理器,然后通过在容器中创建? bean
?,在适当的时候调用它。
在你自定义的? BeanPostProcessor
? 接口实现类中,要实现以下的两个抽象方法 ?BeanPostProcessor.postProcessBeforeInitialization(Object, String)
? 和 ?BeanPostProcessor.postProcessAfterInitialization(Object, String)
? 和,注意命名要准确
否则会出现: ?“ The type InitHelloWorld must implement the inherited abstract method BeanPostProcessor.postProcessBeforeInitialization(Object, String) ”
?之类的错误
例子:
下面的例子显示如何在 ?ApplicationContext
? 的上下文中编写,注册和使用 ?BeanPostProcessor
?。
我们在适当的位置使用 Eclipse IDE,然后按照下面的步骤来创建一个 ?Spring
?应用程序:
步骤 | 描述 |
---|---|
1 | 创建一个名称为 ?SpringExample ? 的项目,并且在创建项目的? src ?文件夹中创建一个包 ?com.tutorialspoint ?。 |
2 | 使用? Add External JARs ?选项,添加所需的? Spring ? 库,解释见 ?Spring Hello World Example ?章节。 |
3 | 在 ?com.tutorialspoint ?包中创建 Java 类 ?HelloWorld ?、?InitHelloWorld ?
?和 ?MainApp ?。 |
4 | 在? src ?文件夹中创建? Beans ?配置文件? Beans.xml ?。 |
5 | 最后一步是创建的所有 Java 文件和 Bean 配置文件的内容,并运行应用程序,解释如下所示。 |
这里是 HelloWorld.java 文件的内容:
package com.tutorialspoint;
public class HelloWorld {
private String message;
public void setMessage(String message){
this.message = message;
}
public void getMessage(){
System.out.println("Your Message : " + message);
}
public void init(){
System.out.println("Bean is going through init.");
}
public void destroy(){
System.out.println("Bean will destroy now.");
}
}
这是实现? BeanPostProcessor
?的非常简单的例子,它在任何 ?bean
? 的初始化的之前和之后输入该 ?bean
? 的名称。你可以在初始化 ?bean
?的之前和之后实现更复杂的逻辑,因为你有两个访问内置 ?bean
? 对象的后置处理程序的方法。
相关阅读 >>
更多相关阅读请进入《Spring IoC》频道 >>
深入理解Java虚拟机 JVM高级特性与实践 周志明 第3版
这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典。