先来讲一下junit配置spring进行单元测试,因为我们的demo就是在这种环境下测试的.
首先用maven引入两个依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.1.3.RELEASE</version>
<scope>provided</scope>
</dependency>
然后写个基类用来加载配置文件
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:spring/*.xml","classpath:mybatis/*.xml"})
public class TestSpring {
}
然后我们的类直接继承该类就可以了
public class Demo extends TestSpring{
@Autowired
private RegisterService registerService;
@Test
public void test(){
String name="zhangsan";
String password="aaa";
System.out.println(registerService.regist(name, password));
}
}
然后开始讲我们的spring的后置处理器,后置处理器可以在bean初始化之前和之后做一些额外的处理,不多说了,贴代码
package com.xj.mvc.beanpostprocessor;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
public class MyBeanPostProcessor implements BeanPostProcessor{
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("spring后置处理器再对象初始化后");
return bean;
}
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("spring后置处理器在对象初始化前");
return bean;
}
}
这里需要注意一下,最后一定要将bean返回,不然后面就没法儿使用了.
<bean id="myBeanPostProcessor" class="com.xj.mvc.beanpostprocessor.MyBeanPostProcessor"></bean>
然后就可以看到
spring后置处理器在对象初始化前
[org.springframework.beans.factory.config.PropertiesFactoryBean] - Loading properties file from class path resource [log4j.properties]
spring后置处理器再对象初始化后
就是这样了,是不是很简单,其实只是给我们提供一个可以额外处理bean的一种方式而已.