spring初始化目前有三种方式
1.实现InitializingBean接口,继而实现afterPropertiesSet的方法
2.反射原理,配置文件使用init-method标签直接注入bean
<bean id="initMethodBean" class="com.InitRuleBean" init-method="initMethod"></bean>
3.@PostConstruct注解
撸代码
/**
* @Title:
* @Auther: hangyu
* @Date: 2019/3/12
* @Description
* @Version:1.0
*/
public class InitRuleBean implements InitializingBean {
/**
* 构造函数
*/
public InitRuleBean(){
System.out.println("InitRuleBean");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("afterPropertiesSet");
}
@PostConstruct
public void postConstruct(){
System.out.println("postConstruct");
}
public void initMethod() {
System.out.println("initMethod");
}
}
<bean class="com.InitRuleBean" init-method="initMethod"></bean>
启动项目,打印结果
2019-03-12 16:54:43.915 INFO o.s.scheduling.concurrent.ThreadPoolTaskExecutor - Initializing ExecutorService
InitRuleBean
postConstruct
afterPropertiesSet
initMethod
实践出真知:通过上述输出结果,三者的先后顺序也就一目了然了:
Constructor(构造器) > @PostConstruct > InitializingBean > init-method
网友评论