在使用springboot进行开发的过程中,我们经常需要处理这样的场景:在服务启动的时候,需要向服务注册中心(例如zk)注册服务状态,以便当服务状态改变的时候,可以故障摘除和负载均衡。
我遇到过两种注册的途径:
1、在Spring的webapplication启动完成后,直接进行注册;
2、在servlet容器启动完成后,通过listener进行注册。
本文通过一个demo讲述一下这两种注册方式,使用的是传统的向zk注册的方案。
1、Spring webapplication启动完成后注册
先上代码看一下
@SpringBootApplication
public class WebApplication {
private static final Logger logger = LoggerFactory.getLogger(WebApplication.class);
private static volatile boolean IS_REGISTRY = false;
public static void main(String[] args) {
ApplicationContext context = run(WebApplication.class, args);
if (IS_REGISTRY) {
logger.info("注册2: WebApplication启动完成后");
ZkClient zkClient = context.getBean(ZkClient.class);
zkClient.register();
IS_REGI