SpringBoot 2.0.1中未提供执行器/刷新

时间:2018-05-01 09:53:36

标签: spring spring-boot spring-cloud spring-boot-actuator spring-cloud-config

我正在为Spring-Config-ServerSpring-Config-Client创建一个演示项目。

SpringBoot 1.5.6.RELEASE中,一切正常。

但是,当我将项目升级到2.0.1.RELEASE时,它不提供执行器端点。

1.5.6.RELEASE

中提供的执行器端点
Mapped "{[/refresh || /refresh.json],methods=[POST]}"
Mapped "{[/dump || /dump.json],methods=[GET]
Mapped "{[/heapdump || /heapdump.json],methods=[GET]
Mapped "{[/autoconfig || /autoconfig.json],methods=[GET]
Mapped "{[/resume || /resume.json],methods=[POST]}"
Mapped "{[/configprops || /configprops.json],methods=[GET]
Mapped "{[/features || /features.json],methods=[GET]
Mapped "{[/loggers/{name:.*}],methods=[GET]
Mapped "{[/restart || /restart.json],methods=[POST]}"
...and many more

2.0.1.RELEASE

中提供的执行器端点
Mapped "{[/actuator/health],methods=[GET]
Mapped "{[/actuator/info],methods=[GET]
Mapped "{[/actuator],methods=[GET]

pom.xml 2.0.1.RELEASE

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RC1</spring-cloud.version>
    </properties>

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

bw 1.5.6 pom的唯一区别是版本和spring-cloud.version = Dalston.SR2

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:13)

经过一些研究后,我发现Spring Boot 2.0中未显示端点的原因是as per docs

  

默认情况下,启用除关闭之外的所有端点

所以,我们需要手动启用它们。

我在management.endpoints.web.exposure.include=*文件中添加了application.properties,现在所有的端点都回来了。

注意:如果您使用的是.yml,请务必使用"*"而不是*

答案 1 :(得分:3)

现在可以使用属性

配置HTTP上端点的曝光
management.endpoints.web.exposure.include
management.endpoints.web.exposure.exclude

您可以通过Actuator提到的ID公开端点。

# Include all endpoints 
management.endpoints.web.exposure.include=*
# Exclude specifics 
management.endpoints.web.exposure.exclude=env

答案 2 :(得分:3)

可以启用

refresh端点以通过Web使用(通过Web公开),方法是在application.yaml

中使用
management.endpoints.web.exposure.include: health,info,refresh

Spring Boot默认情况下启用healthinfo端点。有必要列出它们以使其保持启用状态。

如果您的应用程序具有此URL http://localhost:8181

您可以发送POST刷新请求

http://localhost:8181/actuator/refresh

答案 3 :(得分:1)

即使添加以下行,有时也无济于事 management.endpoints.web.exposure.include = *

尝试一下:- 刷新仅适用于OPTIONS方法,在少数情况下不支持POST方法。

enter image description here

答案 4 :(得分:0)

这就是我所做的。 通过设置启用所有端点

management.endpoints.web.exposure.include=*

并发送了一个空请求来刷新端点。

curl -d '{}' -H 'Content-Type: application/json' http://localhost:8000/actuator/refresh

URL http://localhost:8000/actuator/ 将列出所有可用的端点。

P.S.:我的应用程序在端口 8000 上运行。在默认端口 8080 上,我正在运行配置服务器。