基于SpringBoot的智能推荐Demo(入门到实战仅需一篇教程)【Demo已开源】

SpringBoot+MySql+MongoDB+Spark+Redis+Neo4j+Swagger框架整合Demo【Demo已开源】

WDZn61.png

1 准备环境(已有可跳过)

  1. Docker(推荐Linux下Docker)

    • Windows中的Docker

      • Docker Desktop

        需要电脑支持并开启Hyper-v(注:Hpyer-v与旧版VMware不兼容)

    • Linux中的Docker需要:

      • VMware Workstation(推荐)或Linux服务器
  2. IntelliJ IDEA

1.1 VMware Workstation(虚拟机)

1.1.1 概括

  • 一台电脑安装多个隔离的操作系统作为自己的服务器

1.1.2 简介

  • VMware Workstation(中文名“威睿工作站”)是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。VMware Workstation可在一部实体机器上模拟完整的网络环境,以及可便于携带的虚拟机器,其更好的灵活性与先进的技术胜过了市面上其他的虚拟计算机软件。对于企业的 IT开发人员和系统管理员而言, VMware在虚拟网路,实时快照,拖曳共享文件夹,支持 PXE 等方面的特点使它成为必不可少的工具。

1.1.3 Getting Started

1.1.4 应用

使用VMware Workstation搭建Ubuntu服务器

  1. Ubuntu

    镜像文件:Download Ubuntu Desktop

  2. Vmware安装Ubuntu

    WDEa8A.png

1.2 Docker

1.2.1 概括

  • 一键部署和管理运行环境

1.2.2 简介

  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

1.2.3 Getting Started

  • Install Docker Engine on Ubuntu

    # 卸载旧版本
    sudo apt-get remove docker docker-engine docker.io containerd runc
    # 安装相关依赖
    sudo apt-get update
    sudo apt-get install \
      apt-transport-https \
      ca-certificates \
      curl \
      gnupg \
      lsb-release
    # 添加GPG key
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    # 安装docker
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    # hello-world
    sudo docker run hello-world
    

1.2.4 应用

Docker常用命令

# 只要能区分,id:88****可以不写全
docker images
# 删除镜像
docker rmi 88
# 展示所有容器
docker container ls -a
# 停止容器
docker stop 88
# 删除容器
docker rm 88

# 自启动容器
docker update --restart=always 88

# 谨慎操作
# docker中 启动所有的容器命令
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
# docker中    关闭所有的容器命令
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
# docker中 删除所有的容器命令
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
# docker中    删除所有的镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)

2 SpringBoot

2.1 概括

  • Spring是Java的一个开发框架,Spring Boot是Spring的扩展,更快,更高效

2.2 简介

  • 创建独立的Spring应用程序
  • 直接嵌入Tomcat、Jetty或Under拖车(不需要部署WAR文件)
  • 提供固执己见的“初学者”依赖关系,以简化构建配置
  • 尽可能自动配置Spring和第三方库
  • 提供生产准备功能,如度量、健康检查和外部化配置。
  • 绝对不需要生成代码,也不需要xml配置。

2.3 Quickstart Guide

  • 方式有很多,比如
    1. 通过在线网站,挑选喜欢的模块进行构建(比较规范,仅供参考)WDEdgI.png
    2. 通过IDEA,新建Maven工程,自己在pom.xml添加相关依赖(推荐)WDEwvt.png

2.4 应用

智能推荐Demo步骤一:项目构建

  • 依赖:pom.xml
  • 配置:resources/application.properties
  • 启动类:java/com…/xxxApplication.java
  • 包:java/com../
    • 配置:config
    • 控制:controller
    • 实体(neo4j):entity
    • 实体(mysql、mongodb):pojo
    • 操作映射器(mysql):mapper
    • 操作仓库(mongodb、neo4j):repository
    • 逻辑:service
    • 逻辑实现:service/impl
    • 工具:utils
  • 测试:test/java/com…/xxxApplicationTests.java

3 MySql(存储FriendInfo)

3.1 概括

  • 安装非常方便的关系型数据库

3.2 简介

  • MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
  • MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
  • MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

3.3 Getting Started

  • 使用Docker部署Mysql容器

    # 建立目录
    cd /home/newborne
    mkdir -p mysql
    cd mysql 
    mkdir -p conf logs data
    # 拉取镜像
    sudo docker pull mysql:5.7
    # 创建容器
    sudo docker run -p 3306:3306 \
    -v /home/newborne/mysql/conf:/etc/mysql \
    -v /home/newborne/mysql/logs:/var/log/mysql \
    -v /home/newborne/mysql/data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=****** \
    -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
    

3.4 应用

智能推荐Demo步骤二:MySql整合

    • friend_info

      /*
       Navicat Premium Data Transfer
      
       Source Server         : 192.168.111.133_3306
       Source Server Type    : MySQL
       Source Server Version : 50735
       Source Host           : 192.168.111.133:3306
       Source Schema         : yizhi
      
       Target Server Type    : MySQL
       Target Server Version : 50735
       File Encoding         : 65001
      
       Date: 22/07/2021 18:53:26
      */
      
      SET NAMES utf8;
      SET FOREIGN_KEY_CHECKS = 0;
      
      -- ----------------------------
      -- Table structure for friend_info
      -- ----------------------------
      DROP TABLE IF EXISTS `friend_info`;
      CREATE TABLE `friend_info`  (
        `id` bigint(20) NOT NULL AUTO_INCREMENT,
        `mobile` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '电话',
        `name` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '姓名',
        `age` int(11) NULL DEFAULT NULL COMMENT '年龄',
        `remark` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '备注',
        PRIMARY KEY (`id`) USING BTREE
      ) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
      
      -- ----------------------------
      -- Records of friend_info
      -- ----------------------------
      INSERT INTO `friend_info` VALUES (1, '17345660628', '邹知', 26, '河南省信阳市罗山县止知始路归翳形社区72号');
      INSERT INTO `friend_info` VALUES (2, '14589533442', '萧于', 25, '河南省三门峡市卢氏县意明有路设言社区79号');
      INSERT INTO `friend_info` VALUES (3, '18443280035', '傅后学', 20, '河南省信阳市浉河区意德修路来消命留社区93号');
      INSERT INTO `friend_info` VALUES (4, '13576126061', '萧天之', 26, '河南省信阳市光山县后欲齐路之荣园往社区43号');
      INSERT INTO `friend_info` VALUES (5, '13037652760', '康修', 26, '河南省洛阳市吉利区身而后路为而问求社区76号');
      INSERT INTO `friend_info` VALUES (6, '14765905634', '曹后定', 28, '河南省济源市坡头镇意先治路亦觉舟趣社区10号');
      INSERT INTO `friend_info` VALUES (7, '13652802885', '叶其', 18, '河南省周口市项城市修治路与实亲社区86号');
      INSERT INTO `friend_info` VALUES (8, '14978566974', '叶致者', 29, '河南省濮阳市濮阳县格诚而路请菊怀社区68号');
      INSERT INTO `friend_info` VALUES (9, '17017431488', '薛矣', 23, '河南省安阳市林州市之安路以棹社区35号');
      INSERT INTO `friend_info` VALUES (10, '15365926127', '田知其', 17, '河南省鹤壁市山城区知身路以尽心社区57号');
      
      SET FOREIGN_KEY_CHECKS = 1;
      
  1. 依赖:pom.xml

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
    
  2. 配置:resources/application.properties

    # mysql数据库连接
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://192.168.111.133:3306/yizhi?characterEncoding=utf-8&useSSL=false
    spring.datasource.username=root
    spring.datasource.password=******
    
  3. 包:java/com../

    • 控制:controller/FriendInfoController.java
    • 实体:pojo/FriendInfo.java
    • 操作映射器:mapper/FriendInfoMapper.java
    • 逻辑:service/FriendInfoService.java
    • 逻辑实现:service/impl/FriendInfoServiceImpl.java

4 MongoDB(存储FriendRecommend)

4.1 概括

  • 适合海量数据存储的非关系型数据库

4.2 简介

  • MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

4.3 Getting Started

  • 使用Docker部署MongoDB容器

    # 建立目录
    cd /home/newborne
    mkdir -p mongo
    cd mongo
    mkdir -p data backup conf
    # 拉取镜像
    docker pull mongo:4.0.3
    
    docker run -p 27017:27017 \
    -v /home/newborne/mongo/data:/data/db \
    -v /home/newborne/mongo/backup:/data/backup \
    -v /home/newborne/mongo/conf:/data/configdb \
    -d mongo --auth
    
    docker run -p 27017:27017 \
    -d mongo:4.0.3 --auth
    
    docker exec -it *** /bin/bash
    
    mongo
    
    use admin
    
    db.createUser(  {    user: "root",    pwd: "Bujidao0",    roles: [ "root" ]  })
    
    db.auth("root","Bujidao0")
    
    use yizhi
    
    db.createUser( { user:"root", pwd: "Bujidao0", roles: [ "dbOwner" ] } )
    

4.4 应用

智能推荐Demo步骤三:MongoDB整合

  1. 集合

    • friend_recommend
  2. 依赖:pom.xml

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    
  3. 配置:resources/application.properties

    # mongodb
    spring.data.mongodb.host=192.168.111.133
    spring.data.mongodb.port=27017
    spring.data.mongodb.database=yizhi
    spring.data.mongodb.username=root
    spring.data.mongodb.password=******
    
  4. 包:java/com../

    • 控制:controller/FriendRecommendController.java
    • 实体:pojo/FriendRecommend.java
    • 操作仓库:repository/FriendRecommendRepository
    • 逻辑:service/FriendRecommendService.java
    • 逻辑实现:service/impl/FriendRecommendServiceImpl.java

5 MongoDB-Spark(FriendRecommend计算)

5.1 Spark

5.1.1 概括

  • 专为大规模数据处理而设计的快速通用的计算引擎

5.1.2 简介

  • Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
  • Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
  • Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
  • 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。

5.2 Spark MLlib

5.2.1 概括

  • Spark 的机器学习库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模。

5.2.2 简介

  • MLlib 由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道 API。

  • 组成

    名称说明
    数据类型向量、带类别的向量、矩阵等
    数学统计计算库基本统计量、相关分析、随机数产生器、假设检验等
    算法评测AUC、准确率、召回率、F-Measure 等
    机器学习算法分类算法、回归算法、聚类算法、协同过滤等
  • ALS算法

    def train(
            # 需要训练的数据集
            ratings: RDD[Rating],
            rank: Int,
            # 模型中隐藏因子数,rank一般选在8到20之间
            iterations: Int,
            # 算法中迭代次数,一般10次即可
            lambda: Double,
            # ALS中的正则化参数,一般设置0.01
            blocks: Int,
            # 并行计算的block数(-1为自动配置)
            alpha: Double,
            # ALS隐式反馈变化率用于控制每次拟合修正的幅度
            seed: Long
            # 加载矩阵的随机数
    ): MatrixFactorizationModel = {
        new ALS(blocks, blocks, rank, iterations, lambda , true, alpha, seed).run(ratings)
    }
    

5.2.3 应用

智能推荐Demo步骤四:Spark整合

  1. 依赖:pom.xml

    <!-- spark相关 -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-mllib_2.12</artifactId>
        <version>2.4.3</version>
    </dependency>
    <dependency>
        <groupId>org.mongodb.spark</groupId>
        <artifactId>mongo-spark-connector_2.12</artifactId>
        <version>2.4.1</version>
    </dependency>
    
  2. 配置:resources/app.properties

    # mongodb配置
    spark.mongodb.output.friend.uri = mongodb://192.168.111.133:27017/yizhi.friend_recommend?readPreference=primaryPreferred
    # mysql配置
    jdbc.driver-class-name=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://192.168.111.133:3306/yizhi?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
    jdbc.username=root
    jdbc.password=******
    
  3. 包:java/com../

    • spark/MLibRecommend.java
    • spark/SparkFriendRecommend.java(手动运行,生成相似度)
  4. 用户计分规则

    字段权重
    年龄差0-2岁 70分3-5 60分5-10岁 50分10岁以上 0分
    性别异性 10分同性0分
    位置同城20分不同0分

6 Redis(缓存)

6.1 概括

  • 高性能key-value的非关系型数据库

6.2 简介

  • Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

6.3 Getting Started

  • 使用Docker建立Redis容器

    # 建立目录
    cd /home/newborne
    mkdir -p redis
    cd redis
    mkdir -p data conf
    vim /home/newborne/redis/conf/redis.conf
    # ============
    # 从 https://redis.io/topics/config/ 获取redis.conf
    # 注释 bind 127.0.0.1 
    requirepass ******
    appendonly yes
    # ============
    
    # 拉取镜像
    docker pull redis:5.0.2
    
    # 部署Redis
    docker run -p 6379:6379 \
    -v /home/newborne/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
    -v /home/newborne/redis/data:/data \
    -d redis:5.0.2 redis-server /usr/local/etc/redis/redis.conf 
    
    docker exec -it *** /bin/bash
    
    > auth ******
    > set name 1
    > get name
    
  • @Cacheable

    属性/方法名解释
    value缓存名,必填,它指定了你的缓存存放在哪块命名空间
    cacheNames与 value 差不多,二选一即可
    key可选属性,可以使用 SpEL 标签自定义缓存的key
  • @CachePut

    属性/方法名解释
    value缓存名,必填,它指定了你的缓存存放在哪块命名空间
    cacheNames与 value 差不多,二选一即可
    key可选属性,可以使用 SpEL 标签自定义缓存的key
  • @CacheEvict

    属性/方法名解释
    value缓存名,必填,它指定了你的缓存存放在哪块命名空间
    cacheNames与 value 差不多,二选一即可
    key可选属性,可以使用 SpEL 标签自定义缓存的key
    allEntries是否清空所有缓存,默认为 false。如果指定为 true,则方法调用后将立即清空所有的缓存
    beforeInvocation是否在方法执行前就清空,默认为 false。如果指定为 true,则在方法执行前就会清空缓存

6.4 应用

智能推荐Demo步骤五:Redis整合

  1. Key

    • 自定义
  2. 依赖:pom.xml

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <!-- spring2.X集成redis所需common-pool2-->
    <dependency>
    	<groupId>org.apache.commons</groupId>
    	<artifactId>commons-pool2</artifactId>
    	<version>2.6.0</version>
    </dependency>
    
  3. 配置:resources/application.properties

    # redis
    spring.redis.host=192.168.111.133
    spring.redis.port=6379
    spring.redis.database= 0
    spring.redis.password=******
    spring.redis.timeout=1800000
    # 连接池
    spring.redis.lettuce.pool.max-active=20
    spring.redis.lettuce.pool.max-wait=-1
    # 最大阻塞等待时间(负数表示没限制)
    spring.redis.lettuce.pool.max-idle=5
    spring.redis.lettuce.pool.min-idle=0
    
  4. 包:java/com../

    • 配置:config/RedisConfig.java

7 Neo4j(知识图谱)

7.1 概括

  • 通过结点和联系建立图谱的非关系型数据库

7.2 简介

  • Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
  • Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注.

7.3 Get Started

  • 使用Docker部署Neo4j容器

    docker pull neo4j
    
    mkdir -p neo4j
    cd neo4j 
    mkdir -p data plugins logs conf import
    
    docker run \
        -p 7474:7474 -p 7687:7687 \
        -v /home/newborne/neo4j/data:/data \
        -v /home/newborne/neo4j/plugins:/plugins \
        -v /home/newborne/neo4j/logs:/logs \
        -v /home/newborne/neo4j/conf:/var/lib/neo4j/conf \
        -v /home/newborne/neo4j/import:/var/lib/neo4j/import \
        --name neo4j-apoc \
        -e NEO4J_apoc_export_file_enabled=true \
        -e NEO4J_apoc_import_file_enabled=true \
        -e NEO4J_apoc_import_file_use__neo4j__config=true \
        -e NEO4JLABS_PLUGINS=\[\"apoc\"\] \
        --env NEO4J_AUTH=neo4j/****** \
        neo4j
        
    http://192.168.111.133:7474
    
    # 查询结点
    match(x:Friend{}) return x
    
  • Windows下部署

    Download Neo4j Desktop

7.4 应用

智能推荐Demo步骤六:Neo4j整合

  1. 结点

    • Friend
  2. 联系

    • FriendRelationship
  3. 依赖:pom.xml

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-neo4j</artifactId>
    </dependency>
    
  4. 配置:resources/application.properties

    # neo4j
    spring.data.neo4j.uri=bolt://192.168.111.133:7687
    spring.data.neo4j.username=neo4j
    spring.data.neo4j.password=******
    
  5. 包:java/com../

    • 结点:entity/node/FriendNode.java
    • 关系:entity/relationship/FriendRelationship.java
    • 操作仓库:repository/FriendRelationshipRepository
    • 逻辑:service/FriendRelationshipService.java
    • 逻辑实现:service/impl/FriendRelationshipServiceImpl.java

8 Swagger

8.1 概括

  • 一个接口文档生成工具,同时提供接口测试调用的辅助功能

8.2 简介

  • Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
  • Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。
  • 支持 API 自动生成同步的在线文档:使用 Swagger 后可以直接通过代码生成文档,不再需要自己手动编写接口文档了,对程序员来说非常方便,可以节约写文档的时间去学习新技术。
  • 提供 Web 页面在线测试 API:光有文档还不够,Swagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接口。

8.3 Getting Started

  • @Api:修饰整个类,描述Controller的作用
  • @ApiOperation:描述一个类的一个方法,或者说一个接口
  • @ApiParam:单个参数描述
  • @ApiModel:用对象来接收参数
  • @ApiModelProperty:用对象接收参数时,描述对象的一个字段
  • @ApiImplicitParam:一个请求参数
  • @ApiImplicitParams:多个请求参数

8.4 应用

  • http://newborne.top:8888/swagger-ui.html(自己的地址)
  • 在这里插入图片描述

智能推荐Demo步骤七:Swagger整合

  1. 依赖:pom.xml

    <!--swagger-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.7.0</version>
    </dependency>
    <!--swagger ui-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.7.0</version>
    </dependency>
    
  2. 包:java/com../

    • config/Swagger2Config.java

9 实现思路流程图

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 在这里插入图片描述

10 项目地址

Demo版:https://gitee.com/newborne/yizhi-demo

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

newborne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值