1、 使用 @PostConstruct 注解
2、 @Bean(initMethod = "initMethod") 及 xml 中配置 init-method = "initMethod" 标签
3、实现 InitializingBean 接口中的 afterPropertiesSet 方法
@Configuration
public class SpringBeanInitDemo {
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
// 注册配置文件
applicationContext.register(SpringBeanInitDemo.class);
// 启动 applicationContext 上下文
applicationContext.refresh();
User user = applicationContext.getBean(User.class);
// 关闭 applicationContext 上下文
applicationContext.close();
}
/**
* 默认 true,配置该注解实现了延迟加载,
* bean的实例化及初始化在第一次获取bean的时候实现,
* 容器启动时不加载,减少了容器启动时间
*/
@Lazy
@Bean(initMethod = "initMethod")
public User user(){
return new User();
}
}
public class User implements InitializingBean {
@PostConstruct
public void init(){
System.out.println("user @PostConstruct 初始化方法......");
}
public void initMethod(){
System.out.println("user initMethod 初始化方法......");
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("user afterPropertiesSet 初始化方法......");
}
}
备注:三种初始化方法有顺序 @PostConstruct > afterPropertiesSet > initMethod