第二章:简单springcloud微服务项目,服务提供者和swagger2插件使用

Spring Cloud服务提供者和swagger2插件使用

注意:本章代码基于第一篇文章进行开发

          Maven Module项目请按照第一篇文章中的步骤创建,本章就不重复说明了。


开始新建一个Maven Module项目,项目名称为xm-web-controller,结构图如下:


步骤一:xm-web-controller项目pom.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  
  <!-- 父项目引用,创建时会自动生成 -->
  <parent>
    <groupId>com.maven.xm</groupId>
    <artifactId>xm-web-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>xm-web-controller</artifactId>
  <packaging>jar</packaging>
  
  <dependencies>
  	<!-- 服务提供jar -->
  	<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
      
    <!-- spring boot test 用于编写Test测试,本例可省略-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    
    <!-- swagger ${io.springfox}这个参数在父项目pom.xml中存在-->
	<dependency>
		<groupId>io.springfox</groupId>
		<artifactId>springfox-swagger2</artifactId>
		<version>${io.springfox}</version>
	</dependency>
	<dependency>
	<groupId>io.springfox</groupId>
	    <artifactId>springfox-swagger-ui</artifactId>
	    <version>${io.springfox}</version>
	</dependency>
	
  </dependencies>
  
</project>

步骤二:创建一个application.properties文件,该文件有几种形式,如application.yml或application.xml,请自行选择

             spring.port:服务提供者端口号。

             spring.application.name:服务提供者名称,名称全部小写。

             spring.client.serviceUrl.defaultZone:服务注册中心地址,该项目运行时,会自动注册到注册中心。

             注意事项:该文件中不能有Tab字符,如存在Tab字符,运行时会报异常。

server.port = 8762
spring.application.name = xm-web-controller
eureka.client.serviceUrl.defaultZone = http://localhost:8761/eureka/

步骤三:创建WebApplication.java文件,内容如下:

package com.maven.xm.web;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

/**
 * @EnableDiscoveryClient基于spring-cloud-commons, @EnableEurekaClient基于spring-cloud-netflix。
         就是如果选用的注册中心是eureka,那么就推荐@EnableEurekaClient,如果是其他的注册中心,那么推荐使用@EnableDiscoveryClient。
   @EnableEurekaClient源码上有@EnableDiscoveryClient注解,可以说基本就是EnableEurekaClient有@EnableDiscoveryClient的功能
 * 
 * @author ouyangjun
 * 
 */
@SpringBootApplication
@EnableEurekaClient
public class WebApplication {

	private static final Logger LOGGER = LoggerFactory.getLogger(WebApplication.class);
	
	public static void main(String[] args) {
		SpringApplication.run(WebApplication.class);
		LOGGER.info("********************Web Server Started********************");
	}
	
}

步骤四:创建Swagger2.java文件,内容如下:

             注意:该文件内容也可以放入到WebApplication类中,分开是为了更好理解和维护。

package com.maven.xm.web;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * swagger2
 * 地址: http://localhost:8762/swagger-ui.html
 * @author ouyangjun
 	<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>
	<!-- 上面两个jar的必须的,下面这个是第三方的UI界面的美化,不是必需的 -->
	<dependency>
	    <groupId>com.github.xiaoymin</groupId>
	    <artifactId>swagger-bootstrap-ui</artifactId>
	    <version>1.6</version>
	</dependency>
 */
@Configuration
@EnableSwagger2
@ComponentScan("com.maven.xm")
public class Swagger2 {
	
	@Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.maven.xm.web.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Spring Boot中使用Swagger2构建RESTful APIs")
                .description("更多Spring Boot相关文章请关注:http://blog.didispace.com/")
                .termsOfServiceUrl("http://blog.didispace.com/")
                .version("1.0")
                .build();
    }
    
}

步骤五:新建一个Web Test的类DemoController.java,内容如下:

             注解说明: @Api表示整个类接口说明

                               @RestController注解相当于@ResponseBody + @Controller合在一起的作用

                               @RequestMapping,springmvc访问地址配置

                               @ApiOperation,接口的说明描述

package com.maven.xm.web.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

/**
 * @RestController注解相当于@ResponseBody + @Controller合在一起的作用
   1) 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容
   2) 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
 * 
 * @author ouyangjun
 *
 */
@Api(tags="Demo Controller")
@RestController
@RequestMapping(value="/xm/demo")
public class DemoController {

	@ApiOperation(value="Test Hello World!方法", notes="Test")
	@RequestMapping(value = "/hello", method = RequestMethod.GET)
	public String helloMethod(){
		return "Hello Spring Cloud!";
	}
	
}

步骤六:先启动EurekaServerApplication.java注册中心,再运行WebApplication.java

             在浏览器输入:http://localhost:8762/xm/demo/hello访问,界面如下:


步骤七:查看swagger2配置,在地址栏中输入:http://localhost:8762/swagger-ui.html访问

, method = RequestMethod.GET

注意:如不指定@RequestMapping中的method属性,例如:@RequestMapping(value = "/hello"),展示界面如下:



源码下载地址: https://gitee.com/ouyangjun_xm/springcloud/attach_files下chapter-two.rar压缩包

                      码云账户: [email protected]     密码: [email protected]

                      请勿恶意操作,谢谢!

本文说明:该文章属于原创,如需转载,请标明文章转载来源

猜你喜欢

转载自blog.csdn.net/p812438109/article/details/80960561