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

标签 java spring spring-boot

我们最近将 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/

相关文章:

带点的单词的 Java 正则表达式

java - 从依赖包中导入 Spring 配置(*.xml)

java - Jersey 上 ResourceConfig 中的依赖关系问题

java - 测试 hibernate 父/子关系

java - 添加 spring-cloud-starter-dataflow-server-local 会导致错误 : Command line is too long. Shorten command line for ... 或 Spring Boot

java - 在约束布局中使用线性/相对布局是否不好?

java - GOTO/继续 Java 动态编程

java - 重构 Jar 中的包

Azure DocumentDB 和 Spring Boot 冲突

java - 在 Spring Boot 中发出 Get 请求时出错