迁移到Spring Boot 2.0后,应用程序上下文侦听器不起作用

时间:2018-07-20 10:19:44

标签: java spring spring-boot

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

在Spring Boot 1.5.x中,ConfigFileApplicationListenerapplicationConfigurationProperties添加到可用属性源列表中。

由于某些原因,迁移后未添加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,但这没有什么区别。

1 个答案:

答案 0 :(得分:1)

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