微服务学习笔记(微服务整合SpringCloud)

实验目的

  • 掌握微服务项目的整合使用
  • 掌握Swagger-UI的简单使用

微服务项目整合

在 https://github.com/shi469391tou/microservice-mallmanagement.git 地址下载,并导入eclipse中;。
在这里插入图片描述
microservice-eureka-server(Eureka注册中心),搭建服务注册中心,子项目将通过配置注册到注册中心。
其中server中application.yml配置文件

spring:
    application:
        name: eureka-server # 指定应用名称
server:
  port: 8761
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      defaultZone: http://localhost:${server.port}/eureka/
#      上线测试需要使用以下配置
#      defaultZone: http://eureka-server:${server.port}/eureka/

microservice-gateway-zuul,作为其他微服务项目的API网关,实现其他微服务接口的动态代理。配置application文件如下所示:

spring:
  application:
    name: gateway-zuul # 指定应用名称

  cloud:
    inetutils:
      preferred-networks:
      - 10.0   # 设置注册到Eureka中心的优选服务地址

server:
  port: 8050

eureka:
  instance:
      prefer-ip-address: true  #优选通过IP地址找到对应的服务名称

  client:
    #配置eureka注册中心地址
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
#      上线测试需要使用以下配置
#      defaultZone: http://eureka-server:8761/eureka/

#设置Hystrix熔断器判定超时时间
#hystrix:
#  command:
#    default:
#      execution:
#        isolation:
#          thread:
#            timeoutInMilliseconds: 60000
zuul:
  ignoredServices: '*'
  routes:
    user-service:
      path: /user-service/**
      serviceId: user-service
    order-service:
       path: /order-service/**
       serviceId: order-service

microservice-orderservice,主要用于商品订单管理,并提供有关订单管理的RESTFUL风格和API接口,配置application文件如下所示:

#DB Configuration
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.10.1:3306/microservice_mallmanagement
#    与Docker整合时可使用以下配置(也可以使用具体的ip+端口)
#    url: jdbc:mysql://mysql:3306/microservice_mallmanagement
    username: root
    password: 123456
  application:
      name: order-service # 指定应用名称

  cloud:
    inetutils:
      preferred-networks:
      - 10.0   # 设置注册到Eureka中心的优选服务地址

server:
  port: 7900 # 指定该Eureka实例的端口号
eureka:
  instance:
        prefer-ip-address: true  #优选通过IP地址找到对应的服务名称

  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/  #配置eureka注册中心地址
#      上线测试需要使用以下配置
#      defaultZone: http://eureka-server:8761/eureka/

在https://github.com/swagger-api/swagger-ui.git下载Swagger-UI项目到本地,进入项目并倒找dist目录,将整个dist目录复制到需要使用Swagger-UI的工具项目
微服务学习笔记(微服务整合SpringCloud)_第1张图片
微服务学习笔记(微服务整合SpringCloud)_第2张图片

加入Swagger依赖

       
       	io.springfox
       	springfox-swagger-ui
       	2.2.2
       
       
       
       
       	io.springfox
       	springfox-swagger2
       	2.2.2
       

并在该项目下的java下创造配置类SwaggerConfiguration
微服务学习笔记(微服务整合SpringCloud)_第3张图片

package springcloud.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StopWatch;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.Date;
import static springfox.documentation.builders.PathSelectors.regex;
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
	//定义API接口映射路径	
    public static final String DEFAULT_INCLUDE_PATTERN = "/user/.*";
    private final Logger log = 
    		LoggerFactory.getLogger(SwaggerConfiguration.class);
    
    @Bean
    public Docket swaggerSpringfoxDocket() {
      log.debug("Starting Swagger");
      StopWatch watch = new StopWatch();
      watch.start();
      //用于生成对应API接口文档的描述信息,可省略
      ApiInfo apiInfo = new ApiInfo("订单管理API接口测试文档","description",
        		"termsOfServiceUrl","contact","version","","");
      Docket docket = new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo)
        .genericModelSubstitutes(ResponseEntity.class)
        .forCodeGeneration(true)
        .genericModelSubstitutes(ResponseEntity.class)
        .directModelSubstitute(java.time.LocalDate.class, String.class)
        .directModelSubstitute(java.time.ZonedDateTime.class, Date.class)
        .directModelSubstitute(java.time.LocalDateTime.class, Date.class)
        .select()                
        .paths(regex(DEFAULT_INCLUDE_PATTERN))//匹配路径生成对应接口文档 
        .build();
      watch.stop();
      log.debug("Started Swagger in {} ms", watch.getTotalTimeMillis());
      return docket;
    }
}

上述配置类中,通过Docket对象配置了一些API接口文档生成信息,并通过build()方法生成对应的测试文档,其中配置的ApiInfo对象是用来在文档页面显示API接口描述信息的,可以省略,paths()方法用于匹配映射microserver-user微服务项目中以/user/开头的接口方法。

配置数据库信息:

通过navicate创建数据库远程连接,并建立如下数据库
微服务学习笔记(微服务整合SpringCloud)_第4张图片

将数据库文件直接导入到该库下面
微服务学习笔记(微服务整合SpringCloud)_第5张图片

浏览器已显示出了Swagger-ui的测试页面,并出现了usercontroller。整合成功

微服务学习笔记(微服务整合SpringCloud)_第6张图片

接口测试

微服务学习笔记(微服务整合SpringCloud)_第7张图片

你可能感兴趣的:(微服务学习笔记(微服务整合SpringCloud))