Commit ab187a28 by zhoujinghao

swagger 提交

1 parent 0ba828f5
......@@ -109,6 +109,23 @@
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>org.nafmii</groupId>
<artifactId>nafmii-common</artifactId>
</dependency>
</dependencies>
<build>
......
......@@ -5,9 +5,13 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableEurekaClient
@EnableSwagger2
@EnableFeignClients
public class NafmiiAdminApplication {
public static void main(String[] args) {
......
package org.nafmii.nafmiiadmin.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nafmii.nafmiiadmin.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -17,10 +19,13 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("web/nafmii/test/")
@Api(tags = "1.0.0", description = "测试")
public class TestController {
@Autowired
private TestService service;
@ApiOperation( value = "测试",notes = "测试")
@GetMapping("search")
public String search(){
String test = service.search();
......
server.port=8001
spring.application.name=nafmii-admin
logging.level.root=debug
logging.level.root=info
logging.file.path=d:/data/logs/nafmii-admin/
logging.file.max-history=15
logging.file.max-size=300MB
logging.pattern.dateformat=yyyy-MM-dd hh:MM:ss
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka
admin.swagger=org.nafmii.nafmiiadmin
admin.title=NAFMIIweb管理平台应用层接口说明
admin.description=NAFMIIweb管理平台应用层接口说明
eureka.instance.statusPageUrl = http://127.0.0.1:8001/swagger-ui.html
eureka.instance.prefer-ip-address = true
eureka.instance.instance-id = ${spring.cloud.client.ip-address}:${server.port}
\ No newline at end of file
......@@ -58,8 +58,24 @@
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>org.nafmii</groupId>
<artifactId>nafmii-common</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions><!-- 去掉springboot默认配置 -->
......
......@@ -5,10 +5,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableEurekaClient
@EnableFeignClients
@EnableSwagger2
public class NafmiiAppApplication {
public static void main(String[] args) {
......
package org.nafmii.adminService;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -16,6 +17,7 @@ import java.util.List;
* @remark:
*/
@FeignClient(value = "nafmii-admin")
@Component
public interface AdminService {
//测试feign
@GetMapping("web/nafmii/test/search")
......
package org.nafmii.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.nafmii.adminService.AdminService;
import org.nafmii.service.AppService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -17,9 +19,12 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("app/nafmii/test/")
@Api(tags = "2.0.0", description = "测试")
public class AppController {
@Autowired
private AppService appService;
@ApiOperation( value = "测试",notes = "测试")
@GetMapping("search")
public String search(){
String test = appService.search();
......
server.port=8002
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka
spring.application.name=nafmii-app
admin.title=NAFMIIweb管理平台应用层接口说明
admin.description=NAFMIIweb管理平台应用层接口说明
eureka.instance.statusPageUrl = http://127.0.0.1:8002/swagger-ui.html
eureka.instance.prefer-ip-address = true
eureka.instance.instance-id = ${spring.cloud.client.ip-address}:${server.port}
logging.level.root=debug
admin.swagger=org.nafmii.controller
......@@ -16,52 +16,31 @@
<java.version>1.8</java.version>
</properties>
<dependencies>
<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>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-micro-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
......
package org.nafmii.nafmiicommon;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class NafmiiCommonApplication {
public static void main(String[] args) {
SpringApplication.run(NafmiiCommonApplication.class, args);
}
}
package org.nafmii.nafmiicommon;
/**
* @author:zhoujh
* @Function:TODO
* @date 2021/4/21 10:43
* @ClassName:
* @version:
* @remark:
*/
public class test {
}
package org.nafmii.swagger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
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;
/**
* 用于在swagger-ui.html上展示所有Api接口
* User: FrankBai
* Date: 2020/02/14
**/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${admin.swagger}")
private static String ADMIN_SWAGGER;
@Value("${admin.title}")
private static String ADMIN_TITLE;
@Value("${admin.description}")
private static String ADMIN_DESCRIPTION;
@Bean
public Docket adminApi() {
// String basePackage = ADMIN_SWAGGER;// 要暴露的API接口的基础包名
return new Docket (DocumentationType.SWAGGER_2)
.select ()
.apis (RequestHandlerSelectors.basePackage (ADMIN_SWAGGER))
.paths (PathSelectors.any ())
.build ()
.apiInfo (apiInfo ())
.useDefaultResponseMessages (false);
}
private static ApiInfo apiInfo() {
return new ApiInfoBuilder ()
.title (ADMIN_TITLE)
.description (ADMIN_DESCRIPTION)
.version ("1.0")
.build ();
}
}
package org.nafmii.nafmiicommon;
package org.nafmii;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
......
package com.macro.mall;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.dom.java.CompilationUnit;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
import org.mybatis.generator.internal.DefaultCommentGenerator;
import org.mybatis.generator.internal.util.StringUtility;
import java.util.Properties;
/**
* 自定义注释生成器
* Created by macro on 2018/4/26.
*/
public class CommentGenerator extends DefaultCommentGenerator {
private boolean addRemarkComments = false;
private static final String EXAMPLE_SUFFIX="Example";
private static final String MAPPER_SUFFIX="Mapper";
private static final String API_MODEL_PROPERTY_FULL_CLASS_NAME="io.swagger.annotations.ApiModelProperty";
/**
* 设置用户配置的参数
*/
@Override
public void addConfigurationProperties(Properties properties) {
super.addConfigurationProperties(properties);
this.addRemarkComments = StringUtility.isTrue(properties.getProperty("addRemarkComments"));
}
/**
* 给字段添加注释
*/
@Override
public void addFieldComment(Field field, IntrospectedTable introspectedTable,
IntrospectedColumn introspectedColumn) {
String remarks = introspectedColumn.getRemarks();
//根据参数和备注信息判断是否添加备注信息
if(addRemarkComments&&StringUtility.stringHasValue(remarks)){
// addFieldJavaDoc(field, remarks);
//数据库中特殊字符需要转义
if(remarks.contains("\"")){
remarks = remarks.replace("\"","'");
}
//给model的字段添加swagger注解
field.addJavaDocLine("@ApiModelProperty(value = \""+remarks+"\")");
}
}
/**
* 给model的字段添加注释
*/
private void addFieldJavaDoc(Field field, String remarks) {
//文档注释开始
field.addJavaDocLine("/**");
//获取数据库字段的备注信息
String[] remarkLines = remarks.split(System.getProperty("line.separator"));
for(String remarkLine:remarkLines){
field.addJavaDocLine(" * "+remarkLine);
}
addJavadocTag(field, false);
field.addJavaDocLine(" */");
}
@Override
public void addJavaFileComment(CompilationUnit compilationUnit) {
super.addJavaFileComment(compilationUnit);
//只在model中添加swagger注解类的导入
if(!compilationUnit.getType().getFullyQualifiedName().contains(MAPPER_SUFFIX)&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){
compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
}
}
}
jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://140.143.249.40:3308/edz?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
jdbc.userId=root
jdbc.password=123456
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<properties resource="generator.properties"/>
<context id="MySqlContext" targetRuntime="MyBatis3" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<property name="javaFileEncoding" value="UTF-8"/>
<!-- 为模型生成序列化方法-->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<!-- 为生成的Java模型创建一个toString方法 -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!--生成mapper.xml时覆盖原文件-->
<plugin type="org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />
<commentGenerator type="com.macro.mall.CommentGenerator">
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
<property name="suppressDate" value="true"/>
<property name="addRemarkComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.connectionURL}"
userId="${jdbc.userId}"
password="${jdbc.password}">
<!--解决mysql驱动升级到8.0后不生成指定数据库代码的问题-->
<property name="nullCatalogMeansCurrent" value="true" />
</jdbcConnection>
<javaModelGenerator targetPackage="org.nafmii.nafmiimbg.model" targetProject="nafmii-mbg\src\main\java"/>
<sqlMapGenerator targetPackage="org.nafmii.nafmiimbg.mapper" targetProject="nafmii-mbg\src\main\resources"/>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.macro.mall.mapper"
targetProject="mall-mbg\src\main\java"/>
<!--生成全部表tableName设为%-->
<table tableName="%">
<!--<generatedKey column="id" sqlStatement="MySql" identity="true"/>-->
</table>
</context>
</generatorConfiguration>
\ No newline at end of file
......@@ -23,6 +23,7 @@
<module>nafmii-common</module>
<module>nafmii-quartz</module>
<module>nafmii-app</module>
<module>nafmii-mbg</module>
</modules>
<properties>
......@@ -39,6 +40,7 @@
<pagehelper.version>5.2.0</pagehelper.version>
<druid.version>1.1.23</druid.version>
<hutool.version>5.4.0</hutool.version>
<guava.version>20.0</guava.version>
<mybatis-generator.version>1.4.0</mybatis-generator.version>
<mybatis.version>3.5.5</mybatis.version>
<mysql-connector.version>8.0.20</mysql-connector.version>
......@@ -64,6 +66,10 @@
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
......@@ -84,6 +90,29 @@
</dependencies>
<dependencyManagement>
<dependencies>
<!--swagger 相关依赖-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<dependency>
<groupId>org.nafmii</groupId>
<artifactId>nafmii-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!--Spring Cloud 相关依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
......@@ -188,10 +217,10 @@
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--<plugin>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-maven-plugin</artifactId>-->
<!--</plugin>-->
</plugins>
</build>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!