项目情况截图
代码如下:
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());
}
}
运行截图