Skip to main content
 首页 » 编程设计

java中迁移到 Spring Boot 2.0 后应用程序上下文监听器不起作用

2025年05月04日166xing901022

我们最近将 Spring Boot 从 1.5 迁移到 2.0。迁移后,当我运行应用程序时,将调用自定义上下文监听器,如果我们在尚未创建的源之前添加属性源,则它会以 exit code 1 停止应用程序。 。

使用 Spring Boot 1.5.x,ConfigFileApplicationListener添加applicationConfigurationProperties可用属性源列表。

由于某种原因,applicationConfigurationProperties迁移后未添加,因此以下代码失败:

event.getEnvironment().getPropertySources().addBefore("applicationConfigurationProperties", new MapPropertySource("aws", parameters)); 

使用 Spring 1.5.x

o.s.w.c.s.StandardServletEnvironment:Adding PropertySource 'aws' with search precedence immediately higher than 'applicationConfigurationProperties' 

我也启用了以下日志,但没有看到任何异常:

logging.level.org.springframework=TRACE 
logging.level.org.springframework.context=TRACE 
logging.level.org.springframework.boot=TRACE 
logging.level.org.springframework.core=TRACE 

所有应用程序监听器均实现 ApplicationListener<ApplicationEnvironmentPreparedEvent> 。 我查看了迁移指南,发现添加了一个新事件,ApplicationStartedEvent但这应该没有任何区别。

请您参考如下方法:

Spring Boot 2 中没有名为 applicationConfigurationProperties 的属性源。从配置文件派生的属性源的名称现在包含找到该文件的位置的详细信息。例如,如果类路径根目录下有一个 application.properties 文件,则您将拥有一个名为 applicationConfig: [classpath:/application.properties] 的属性源。