sprincloudEurekaservice框架搭建一(服务的注册与发现)
springcloud是在springboot基础上实现企业级分布式应用系统,它集服务发现、服务配置、客服端负载均衡、断路器、服务网关、分布式配置于一身,是当今非常火的一个web分布式架构,网上有很多例子,我觉得这篇博客讲的不错:http://blog.csdn.net/forezp/article/details/70148833
现在我大致讲一下我的搭建
一、搭建springcloud服务发现
第一步,正如上面说的,springcloud是在springboot基础上实现,因此需要先搭建springboot的web架构,但因为springcloud的parent依赖已经能够寻找springboot相关依赖的版本号,因此在pom.xml中的依赖如下:
<!-- springcloud 父依赖 -->
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Camden.SR7</version>
<relativePath />
</parent>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- springboot -->
<!-- 启动核心依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- web核心依赖 -->
<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>
<!-- springboot tomcat依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
</dependencies>
<build>
<finalName>springcloud</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
启动类配置如下
因为springcloud是分布的,因此需要分别启动,因此你需要建立多个项目,我这里只搭建了三个:springcloudservice、springcloudproducer、springcloudconsumer
第二步:搭建springcloudservice(springcloud服务中心)
1)需要在pom.xml中添加以下依赖
<dependencies>
<!-- springcloud -->
<!-- 启动核心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<!-- 服务发现 server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!-- 负载均衡 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<!-- 默认的配置服务依赖,快速自动引入服务的方式,端口8888 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
2)该工程的启动类上添加@EnableEurekaServer,如下:
3)在src/main/resources下添加application.properties文件,并写入以下代码
#配置启动端口
server.port=1111
#服务配置,设定当前工程为服务注册中心,无需注册
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
启动打开可以看到如下页面
第二步:搭建springcloudproducer(服务提供方,主要和数据库打交道,目前还没集成数据库)
1)需要在pom.xml中添加以下依赖
<dependencies>
<!-- springcloud -->
<!-- 服务发现 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
2)该工程的启动类上添加@EnableDiscoveryClient,如下:
3)在src/main/resources下添加application.properties文件,并写入以下代码
#配置启动端口
server.port=3333
#设置服务注册名
spring.application.name=compute-producer
#注意这里必须与注册中心(springcloudserver)的地址一样,否则无法注册
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
启动打开可以看到如下页面
可见producer已经注册上去了,要注册其他项目可以重复以上步骤
二、集成swagger2
细心的朋友会发现当我点击服务右侧的UP (1) - T-PC:compute-producer:3333时会显示
在此我们可以集成swagger进行显示文档,建议将swagger放在与前端交互的工程中
搭建swagger步骤
1)在pom.xml中添加以下依赖
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
2)建立swaggerconfig.class(该类名可以随便起),编写以下代码
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
// 扫描该包下的所有需要在Swagger中展示的API,@ApiIgnore注解标注的除外
.apis(RequestHandlerSelectors.basePackage("com.springcloud.controller")).paths(PathSelectors.any()).build();
}
// 构建api文档的详细信息函数
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 标题
.title("spring boot 测试实验swagger2 构建RESTFUL API")
// 创建人
.contact(new Contact("lj", "http://www.bytebeats.com", "ricky"))
// 版本号
.version("1.0")
// 描述
.description("API描述").build();
}
}
3)建立controller
将你的传入类加上api
启动工程,你可以看到如下界面
这说明你已经配置成功
4)在你的application.properties中加入以下代码
eureka.instance.status-page-url=http://localhost:${server.port}/swagger-ui.html
这样你就配置好了
重新启动,进入注册中心,并点击就可以跳转了