当应用程序关闭时,我希望能够在作为我的初始化程序成员的 CuratorFramework 实例上调用 close() 。这怎么做最好?
您可以让您的初始化程序类实现ApplicationListener
,然后将自己注册为上下文中的侦听器。然后,您将ContextClosedEvent
在上下文关闭时收到。
我也可以将CuratorFramework
实例传递到上下文中,以便可以将其用作 bean 吗?
您可以在初始化程序中执行类似的操作(未经测试):
RootBeanDefinition cfDef = new RootBeanDefinition(MethodInvokingFactoryBean.class);
cfDef.getPropertyValues().add("targetClass", MyInitializer.class);
cfDef.getPropertyValues().add("targetObject", this);
cfDef.getPropertyValues().add("targetMethod", "getCuratorFramework");
((BeanDefinitionRegistry)ctx).registerBeanDefinition("curatorFramework", cfDef);
并向您的初始化程序类添加一个getCuratorFramework()
方法,返回CuratorFramework
您在初始化时创建的方法。