@postconstruct
太早触发(在创建配置Bean时,但是在上下文启动并进行绑定之前)。您想要的是一旦上下文完全初始化,或者至少在绑定了输出通道之后,触发消息的发送。
您有几个选择,所有选择都依赖于其他bean的创建:
要使用SmartLifecycle
来自Spring 的支持(请确保默认情况下isAutoStartup
返回true
,并且相位为零(默认值),以便在绑定输出之后启动Bean)。
使用ApplicationListener
了ContextRefreshedEvent
。
由于这是一个Spring Boot应用程序,因此您可以使用ApplicationRunner
Bean(在创建上下文之后调用它)。