eureka-client
本模块用于演示Eureka Client、Swagger2、Config Client等
url | desc |
---|---|
http://localhost:8081/swagger-ui.html | Eureka客户端接口列表 |
http://localhost:8081/health | 返回应用程序的健康指标,Actuator提供功能之一 |
启用Eureka Client
- 引入Maven依赖
org.springframework.cloud
spring-cloud-starter-eureka
- 配置Eureka服务注册地址
以下是bootstrap.yml中eureka相关配置
eureka:
instance:
leaseRenewalIntervalInSeconds: 10
leaseExpirationDurationInSeconds: 30
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
注:增加leaseRenewalIntervalInSeconds和leaseExpirationDurationInSeconds配置,可修复EurekaServer界面以下警告:
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
- 启用EurekaClient
增加@EnableDiscoveryClient,启用服务注册与发现
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
启用Swagger2
- 引入Maven依赖
本项目swagger版本采用2.5.0;
在测试过程中发现,使用2.6.0版本时,当服务注册到服务中心,会出现服务名为UNKNOWN的情况
io.springfox
springfox-swagger2
${swagger2.version}
io.springfox
springfox-swagger-ui
${swagger2.version}
- 配置并启用Swagger2
增加@EnableSwagger2注解,启用Swagger2
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo()) //创建API基本信息
.groupName("") //指定分组,对应(/v2/api-docs?group=)
.pathMapping("") //base地址,最终会拼接Controller中的地址
.select() //控制要暴露的接口
.apis(RequestHandlerSelectors.basePackage("com.example.eureka.client.controller")) //通过指定扫描包暴露接口
.paths(PathSelectors.any()) //设置过滤规则暴露接口
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Swagger2 测试")
.description("")
.version("1.0")
.termsOfServiceUrl("")
.license("")
.licenseUrl("")
.build();
}
}
配置Config Client
- 引入Maven依赖
org.springframework.cloud
spring-cloud-starter-config
- 配置ConfigServer地址
spring.application.name指定该工程的服务名
spring.profiles.active读取指定环境的配置文件(如:application-dev.properties、eureka-client-dev.properties)
spring.cloud.config.uri指定ConfigServer的地址
server.port指定端口
spring:
application:
name: eureka-client
profiles:
active: dev
cloud:
config:
uri: ${config.server.uri:http://localhost:8888}
server:
port: 8081
- 获取远程服务器文件属性值
通过@Value("${属性名}")获取属性值,见DemoController类hello()
@Value("${demo.env}")
private String env;
其他
Actuator
Actuator提供了很多生产级的特性,如:监控、度量、健康指标等信息
org.springframework.boot
spring-boot-starter-actuator
Devtools
devtools能够实现代码的热部署,可在开发测试阶段启用;如下,只需引入Maven依赖
org.springframework.boot
spring-boot-devtools
运行截图
- swagger2演示
- 应用健康情况