Config Serverを使用してSpring外部構成を実装しようとしました。アプリケーションの起動時は初めて正常に機能していますが、プロパティファイルへの変更は反映されていません。/refreshエンドポイントを使用してその場でプロパティを更新しようとしましたが、機能していないようです。これに関するどんな助けも大いに役立つでしょう。
Localhost:8080/refreshにPOSTしようとしましたが、404エラー応答が返されました。
以下は私のアプリケーションクラスのコードです
@SpringBootApplication
public class Config1Application {
public static void main(String[] args) {
SpringApplication.run(Config1Application.class, args);
}
}
@RestController
@RefreshScope
class MessageRestController {
@Value("${message:Hello default}")
private String message;
@RequestMapping("/message")
String getMessage() {
return this.message;
}
}
pOMファイルは
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.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.M8</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</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>
およびbootstrap.properties
spring.application.name=xxx
spring.cloud.config.uri=https://xxxxxx.com
management.security.enabled=false
endpoints.actuator.enabled=true
エンドポイントは/actuator/refresh
Spring 2以降
コメントから:
management.endpoints.web.exposure.include=refresh
bootstrap.properties/bootstrap.yml
注:初めての場合Spring-Cloud
そして、すべてのキーワードが何に入ることができるのかよくわかりませんweb.exposure
に設定できます*
(management.endpoints.web.exposure.include=*
)すべてを公開し、後でエンドポイントとその制限を知ることができます。
これは、bootstrap.propertiesにプロパティ「management.endpoints.web.exposure.include = *」を追加し、2.0.0以上のバージョンのスプリングのURLを/ actuator/refreshに変更した後、私にとってはうまくいきました。スプリングバージョン1.0.5の場合、URLは/リフレッシュ
[〜#〜] yaml [〜#〜]ファイルの場合、プロパティの値を二重引用符で囲む必要があります。
# Spring Boot Actuator
management:
endpoints:
web:
exposure:
include: "*"
注:このプロパティには、 's'のない別のプロパティに存在する限り、正しいendpointsキーワード( 's'付き)を使用してください。 management.endpoint.health ....」.
SPRING 2.0>でformurlencodedを受け入れることに問題がある場合は、次を使用します。
curl -H "Content-Type:application/json" -d {} http:// localhost:port/actuator/refresh
の代わりに:
curl -d {} http:// localhost:port/refresh
sPRING 1. *で採用されました。