转:
Spring Bean初始化之后执行指定方法
Spring Bean初始化之后执行指定方法
在运用Spring进行实际项目开发过程中,经常会有一种需求就是想要在Bean实例化完成后,自动执行指定方法,包括加载初始值,初始化缓存等。通过简单的XML配置或者使用注解即可实现。
本文仅用于记录简单的使用介绍,不阐述详细的技术实现细节,达到抛砖引玉的效果。
- 1
- 2
XML配置
如果项目中bean是通过xml配置方式来管理与加载的,可以在XML配置bean时,指定init-method属性即可。示例如下:
<bean id="initMethodTest" class="service.InitMethodTest" init-method="initMethod"/>
- 1
bean标签中的init-method指定当Spring容器初始化initMethodTest完成后,自动执行InitMethodTest类中的initMethod方法。InitMethodTest如下:
public class InitMethodTest {
public void initMethod(){
System.out.println(">>>>>>>>>initMethod<<<<<<<<<<<");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
创建JUnit单元测试,不进行执行任何方法,仅查看Spring初始化执行效果
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:config/applicationContext.xml"})
public class InitMethodJUnitTest {
@Autowired
private InitMethodTest initMethodTest;
@Test
public void initMethodTest(){
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
运行结果如下:
>>>>>>>>>initMethod<<<<<<<<<<<
- 1
Spring注解方式
如果项目中bean是通过注解方式管理的,需要在初始化完成后,执行指定方法,仅仅需要在需要执行的方法上添加@PostConstruct注解即可,修改后的JAVA类如下:
@Component
public class InitMethodTest {
@PostConstruct
public void initMethod(){
System.out.println(">>>>>>>>>initMethod<<<<<<<<<<<");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
另外还可以通过实现InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法。
更多请参考:http://blog.csdn.net/heyutao007/article/details/50326793