InitializingBean接口为bean提供了初始化方法,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean完成时会执行该方法。
一、使用示例
1、定义TestInitializingBean,实现InitializingBean接口。
public class TestInitializingBean implements InitializingBean{
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("ceshi InitializingBean");
}
public void testInit(){
System.out.println("ceshi init-method");
}
}
2、配置文件如下:
<bean id="testInitializingBean" class="com.TestInitializingBean" ></bean>
3、测试类,主程序进行Spring的初始化
public class Main {
public static void main(String[] args){
ApplicationContext context = new FileSystemXmlApplicationContext("/src/main/java/com/beans.xml");
}
}
输出结果:
ceshi InitializingBean
以上示例说明在spring初始化bean的时候,如果bean实现了InitializingBean接口,会自动调用afterPropertiesSet方法。
二、实现InitializingBean接口与在配置文件中指定init-method有什么不同?
1、修改配置文件,加上init-method配置,修改如下:
<bean id="testInitializingBean" class="com.TestInitializingBean" init-method="testInit"></bean>
在配置文件中加入init-method="testInit"。
运行Main程序,打印如下结果:
ceshi InitializingBean
ceshi init-method
由结果可看出,在spring初始化bean的时候,如果该bean是实现了InitializingBean接口,并且同时在配置文件中指定了init-method,系统则是先调用afterPropertiesSet方法,然后在调用init-method中指定的方法。
我们可以通过上面的方式进行bean的初始化定制。
网友评论