Spring Bean初始化之后执行指定方法

转:

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

原文地址:https://www.cnblogs.com/libin6505/p/10775438.html