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]
请勿恶意操作,谢谢!
本文说明:该文章属于原创,如需转载,请标明文章转载来源