高级java开发必须掌握的Spring接口——SmartLifecycle
有些场景我们需要在Spring 所有的bean 完成初始化后紧接着执行一些任务或者启动需要的异步服务。常见有几种解决方案 j2ee 注解 启动前@PostConstruct 销毁前@PreDestroy 基于j2ee 规范 springboot 的 org.springframework.boot.CommandLineRunner springboot 特性前面我已经介绍过了 spring org.springframework.context.SmartLifecycle 这里介绍一下第三种 SmartLifecycle SmartLifecycle 不仅仅能在初始化后执行一个逻辑,还能再关闭前执行一个逻辑,比如你一个服务在启动时向服务注册发现中心发一个信号告诉它服务上线了,下线前通知它你下线了。也就是实现了一个 从生到死 的轮回。 话不多说先实现一个SmartLifeCycle 我们发现实现类需要实现3个方法,但是这3个方法并不是 SmartLifecycle 的方法而是 org.springframework.context.Lifecycle 的方法: void start() 我们主要在该方法中启动任务或者其他异步服务,比如开启MQ接收消息当上下文被刷新(所有对象已被实例化和初始化之后)时,将调用该方法,默认生命周期