轉:
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