本节将对RSocketPortInfoApplicationContextInitializer进行分析,关于该对象的基础定义代码如下:
public class RSocketPortInfoApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {}
从对象的基础定义中可以发现并未实现其他接口,下面对ApplicationContextInitializer的实现方法进行说明,详细代码如下:
public void initialize(ConfigurableApplicationContext applicationContext) { applicationContext.addApplicationListener(new Listener(applicationContext)); }
在initialize方法中为应用上下文添加了一个应用监听器,应用监听器类型是Listener,关于该监听器的基础定义代码如下:
private static class Listener implements ApplicationListener<RSocketServerInitia lizedEvent> {}
在该应用监听器中与之对应的处理事件是RSocketServerInitializedEvent,事件处理代码如下:
public void onApplicationEvent(RSocketServerInitializedEvent event) { if (event.getServer().address() != null) { // 设置服务地址的端口 setPortProperty(this.applicationContext, event.getServer().address(). getPort()); } }
在处理RSocketServerInitializedEvent事件时会判断事件对象的服务地址是否为空,在不为空的情况下会设置属性。设置的属性是服务地址的端口。