Привод / обновление не предоставляется в SpringBoot 2.0.1
Я создаю демонстрационный проект для Spring-Config-Server
а также Spring-Config-Client
,
В SpringBoot 1.5.6.RELEASE
все работает нормально.
Тем не менее, когда я обновляю проект до 2.0.1.RELEASE
он не обеспечивает конечные точки привода.
Конечная точка привода указана в 1.5.6. ВЫПУСК
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. ВЫПУСК
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
Пом это версия и spring-cloud.version = Dalston.SR2
Может ли кто-нибудь помочь, пожалуйста?
6 ответов
После небольшого исследования я нашел причину, по которой конечные точки не отображаются в Spring Boot 2.0
согласно документам
По умолчанию все конечные точки, кроме выключения, включены
Итак, нам нужно включить их вручную.
я добавил management.endpoints.web.exposure.include=*
в application.properties
файл и теперь все конечные точки вернулись.
Примечание: если вы используете .yml
убедитесь, что используете "*"
не *
refresh
конечную точку можно включить для использования через Интернет (через Интернет), используя это в application.yaml
management.endpoints.web.exposure.include: health,info,refresh
Spring Boot позволяет health
а также info
конечные точки по умолчанию. Их необходимо перечислить, чтобы они оставались включенными.
Если ваше приложение имеет URL-адрес http://localhost:8181/
Ты можешь отправить POST
просьба обновить
Экспозиция конечных точек по HTTP теперь настраивается с помощью свойств
management.endpoints.web.exposure.include
management.endpoints.web.exposure.exclude
Вы можете выставить конечные точки по идентификатору, указанному Actuator.
# Include all endpoints
management.endpoints.web.exposure.include=*
# Exclude specifics
management.endpoints.web.exposure.exclude=env
Даже после добавления строки, приведенной ниже, иногда не помогает management.endpoints.web.exposure.include=*
Попробуйте это:- Обновление работает по методу OPTIONS, а не по методу POST в некоторых случаях.
Это то, что я сделал. Включены все конечные точки, установив
management.endpoints.web.exposure.include=*
И отправил пустой запрос на обновление конечной точки.
curl -d '{}' -H 'Content-Type: application/json' http://localhost:8000/actuator/refresh
URL-адрес http://localhost:8000/actuator/ содержит список всех доступных конечных точек.
PS: Мое приложение работает на порту 8000. На порту 8080 по умолчанию я запускаю сервер конфигурации.
Чтобы включить обновление, добавьте следующие свойства в файл свойств приложения.
management.endpoints.web.exposure.include=health,info,refresh
management.endpoint.refresh.enabled=true