我有一个Spring Boot Web应用程序。使用 @Configurable 批注通过Java类配置应用程序。我介绍了两个配置文件:“安装”,“正常”。如果安装概要文件处于活动状态,则不会加载任何需要DB连接的Bean。我想创建一个控制器,用户可以在其中设置数据库连接参数,完成后,我想将活动配置文件从“安装”切换为“普通”并刷新应用程序上下文,以便Spring可以初始化每个需要的bean DB数据源。
我可以通过代码修改活动配置文件列表,没有问题,但是当我尝试刷新应用程序上下文时,出现以下 异常 :
`java.lang.IllegalStateException: GenericApplicationContext does not support multiple refresh attempts: just call 'refresh' once`
这就是我启动Spring Boot应用程序的方式:
`new SpringApplicationBuilder().sources(MyApp.class) .profiles("my-profile").build().run(args);`
有人知道如何启动Spring Boot应用程序,让您多次刷新应用程序上下文吗?
Endpoint
这是端点实现(字段中缺少一些详细信息):
@ManagedOperation public synchronized ConfigurableApplicationContext restart() { if (this.context != null) { if (this.integrationShutdown != null) { this.integrationShutdown.stop(this.timeout); } this.application.setEnvironment(this.context.getEnvironment()); this.context.close(); overrideClassLoaderForRestart(); this.context = this.application.run(this.args); } return this.context; }