项目情况截图

spring BeanPostProcessor的练习_servlet

 代码如下:

HelloService.java

package com.shrimpking.code16;

public class HelloService
{
    private String name;

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }
}

HelloBeanPostProcessor.java

package com.shrimpking.code16;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/**
 * @author user1
 */
public class HelloBeanPostProcessor implements BeanPostProcessor
{

    /**
     * 实例化,依赖注入完毕,在初始化init-method之前调用此方法
     * @param obj
     * @param beanName
     * @return
     * @throws BeansException
     */
    @Override
    public Object postProcessBeforeInitialization(Object obj, String beanName) throws BeansException
    {
        if(obj instanceof HelloService)
        {
            ((HelloService)obj).setName("实例化前注入名称");
        }
        return obj;
    }

    /**
     * 实例化,依赖注入,初始化完毕之后调用此方法
     * @param obj
     * @param beanName
     * @return
     * @throws BeansException
     */
    @Override
    public Object postProcessAfterInitialization(Object obj, String beanName) throws BeansException
    {
        return obj;
    }
}

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.xsd">

    <bean id="helloService" class="com.shrimpking.code16.HelloService"/>

    <bean class="com.shrimpking.code16.HelloBeanPostProcessor"/>
</beans>

DemoTest.java

package com.shrimpking.code16;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DemoTest
{
    @Test
    public void test()
    {
        ApplicationContext context = new ClassPathXmlApplicationContext("/code16/beans.xml");
        HelloService helloService = context.getBean("helloService", HelloService.class);
        System.out.println(helloService.getName());
    }
}

运行截图

spring BeanPostProcessor的练习_java_02