【发布时间】:2020-04-09 21:21:57
【问题描述】:
我们已将现有的 Web 应用程序转换为 Spring Boot。
我想做的就是能够使用@Profile("production")。我们将其存储在资源文件夹的 myProps.properties 中。
我可以使用@Value 访问整个应用程序中的 .properties 文件,但似乎为了让@Profile 工作,您必须在设置/最终设置 ServletContext 之前设置活动配置文件,这似乎在 main() 方法期间发生。
我已经尝试了几十件事,但都失败了。我发现您不能在主应用程序类中使用 @Value 设置静态字段。我尝试创建一个实现 WebApplicationInitializer 的类,例如https://www.baeldung.com/spring-profiles,但是我覆盖的 onStartup() 方法永远不会运行。我设置了一个断点,它永远不会被击中。我可以获得断点的唯一方法是,如果我在该方法上@Autowire servletContext,但是上下文已经设置并且无法更改。
我试过 AnnotationConfigWebApplicationContext,我试过 ServletContainerInitializer,我试过 ConfigurableEnvironment 等等。我感觉我在绕圈子。
我觉得为了以“春天的方式”做事,我在这里遗漏了一大块。谁能为我提供 Java 注释配置方式来获取属性并设置活动配置文件以供以后在产品中使用?谢谢。
【问题讨论】:
-
@Thomas__ 该链接中的 4.1 中的 onStartup() 永远不会为我运行。断点永远不会被击中。
-
你想用@Profile("production") 达到什么目的?
-
@ThisIsNoZaku 我们的一些网络服务器会根据某些属性运行不同的任务。该属性由我们的 Ops 人员在部署过程中在属性文件中设置。即在代码库之外。
标签: java spring spring-boot