我们最近将 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]
的属性源。
关于java - 迁移到 Spring Boot 2.0 后应用程序上下文监听器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51440353/