在Spring Boot 2.1中注入默认的“ management.endpoints.web.base-path”值

时间:2018-12-04 00:00:22

标签: spring spring-boot spring-boot-actuator

我试图将“ management.endpoints.web.base-path”注入到我需要知道的班级字段中。我做了几个小时的搜索,但所有答案都是通过在application.xml(或yaml)中设置management.endpoints.web.base-path而不是“如何获取默认值”来“如何自定义端点” management.endpoints.web.base-path”。

以下简单代码期望在Spring Boot应用程序启动时获取任何加载的变量,但在变量中未检索到任何东西。



@Autowired
private Environment environment;

public void myMethod(){
    final String actuatorBase = environment.getProperty("management.endpoints.web.base-path");
}

如果我在application.properties中定义它,则应该可以肯定地加载它,但是我想知道为什么在这里无法检索default(“ / actuator”)。但是,当我运行该应用程序时,我没有问题可以通过/ actuator访问所有与执行器相关的功能端点。

因为它不起作用,所以用@Value注释注入变量也不起作用。

当我在调试器中检查环境变量时,我能够看到application.yaml已加载并且所有替代变量也在那里,但是并不是所有的默认“管理”内容都在那里。

有什么主意吗?此应用程序具有一些自定义配置,没有使用所有AutoConfigurer的内容,因此想知道是否需要使用特定的自动配置来实现它。

我正在使用Spring Boot 2.1.0.RELEASE。

1 个答案:

答案 0 :(得分:1)

在这里自我回答。

WebEndpointProperties是加载所有management.endpoints.web前缀属性的文件,

@Autowired
private WebEndpointProperties webEndpointProperties;

在课堂上,然后

String actuatorWebBasePath = this.webEndpointProperties.getBasePath();

在我的方法中给了我一个基本路径(/执行器)。