第九章 Spring Bean Post 处理器(Spring Framework3.1教程)

BeanPostProcessor接口定义了回调方法你可以实现提供自己的实例化逻辑,依赖解析逻辑等等。你也可以实现一些定制的逻辑在Spring容器完成初始化、配置和实例化bean之后,通过安插一个或多个BeanPostProcessor的实现。

你可以配置多个BeanPostProcessor接口,你可以控制这些BeanPostPorcessor接口的执行顺序通过提供的BeanPostProcessor实现Ordered接口提供order属性。

BeanPostProcessors操作bean(或对象)实例意思是SpringIoC容器初始化bean实例然后BeanPostProcessor接口做它们的事情。

一个ApplicationContext自动的发现任何定义了BeanPostPorcessor接口实现的bean并且注册那些bean为post-processors(后处理程序),由容器适时的时候穿件他们。

示例

如下的例子展示如何在ApplicationConext上下文中,写、注册并使用BeanPostProcessors。

让我们按如下的步骤在Eclipse IDE中创建Spring应用。

步骤 

描述

1

创建一个SpringExample的项目并在src目录下创建com.tutorialspoint包。

2

在Add External JARs选项卡中添加Spring库如在Spring Hello World章节中所讲。

3

在com.tutorialspoint包下创建HelloWorld、InitHelloWorld和MainApp类。

4

在src目录下创建bean的配置文件Beans.xml

5

最后一步在Java类中和Bean配置文件中添加内容,并运行应用。

如下是HelloWorld.java的内容

package com.tutorialspoint;

public class HelloWorld {
    private String message;

    public void init() {
        System.out.println("Bean is going through init.");
    }
    public void destroy() {
        System.out.println("Bean will destroy now.");
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public void getMessage() {
        System.out.println("Your Message:" + message);
    }
}

这是一个十分基础的实现BeanPostProcessor的例子,它会在实例化前和后打印所有bean的名字。你可以实现更复杂的逻辑在实例化bean之前和之后,因为你可以访问bean对象在post processor的两个方法中。

如下是InitHelloWorld源代码:

package com.tutorialspoint;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
    public static void main(String[] args) {
        AbstractApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");

        HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
        obj.getMessage();
        context.registerShutdownHook();
    }
}

如下是含有init和destroy方法的配置文件Beans.xml

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 

    <bean id="helloWorld" class="com.tutorialspoint.HelloWorld" 
         init-method="init" destroy-method="destroy"> 
         <property name="message" value="Hello World!"/> 
    </bean> 

    <bean class="com.tutorialspoint.InitHelloWorld" /> 

</beans> 

一旦你完成了源代码的创建和配置文件,运行应用。如果应用一切正常将会输出如下消息:

BeforeInitialization:helloWorld
Bean is going through init.
AfterInitialization:helloWorld
Your Message:Hello World!
Bean will destroy now.






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值