1.HRM项目基本介绍
2.HRM项目原型(重点)
3.系统管理后端搭建(重点)
4.Mybatis-plus集成(重点)
5.Swagger集成
6.Gitee管理项目
找工作的人、想学习的人
现在社会竞争压力越来愈大,很多应届毕业生毕业后没法直接胜任某类工作,或者是一些已经工作的人慢慢丧失自己学习的能力,最终导致失业无法再次就业。
招聘的单位
虽然求职者非常多,但是很多人的能力达不到用人企业的要求,他们期望一招聘进来马上就能使用,所以需要对求职候选人进行培养筛选。
培训机构
很多培训机构虽然有能力培训人才但是,市场能力比较差,找不到合适的学员,让他们通过培训能找到工作
正是由于以上三类场景,所以我们开发一个源码人力系统,让找工作的人,能够选择特定机构的课程学习,并参与平台发布的招聘,而且还能参与一些活动。 让招聘单位入驻进来发布岗位进行招聘,甚至委托培训机构培训合适的人才。对于配置机构可以发布课程,吸收学员来完成学习并通过收取学费获取商业价值。
通过项目原型进一步了解项目的功能,包括:门户首页、课程搜索页、个人中心等 参考“项目原型”
项目采用主流的前后端分离模式,前端分为系统管理前端,门户网站前端(职位站点,课程站点,用户中心等等)。
系统管理前端采用技术栈为
Node.js,Vue.js,Npm,WebPack,Vue Cli ,Element UI ,Easy Mock等等。
门户网站前端技术栈为
Html ,css,js ,jquery等等。
后端采用微服务架构技术栈为
微服务架构:按照功能拆分N多个服务,每个服务可以独立技术选型,独立开发,独立部署,独立运维.,单个服务使用基于ssm的springboot,服务间通过spring cloud协调.技术包括:
MyBatis-Plus,SpringBoot ,SpringMvc,SpringCloud(Eureka/Nacos,Zuul/Gateway,Config/Nacos,Feign,Hystrix/Sentinel等等),Redis,Fastdfs/阿里云的OSS对象存储技术,ElasticSearch,RabbitMQ,Velocity; 运维方面:阿里云服务器,Docker,Jenkins,Rancher,K8S等等。
项目是基于前后端分离的架构进行开发,前后端分离架构总体上包括前端和服务端,通常是多人协作并行开发,开 发步骤如下:
1.接项目,立项
2.需求分析(产品经理) ,需求文档,概要设计,功能原型图,梳理用户的需求,分析业务流程
3.项目经理组建团队开发 PM,SE,TM=PM+SE,项目启动会,开发人员培训(SE),项目原型搭建(SE) 开发文档
4.开发(开发工程师)
a)接口定义,根据需求分析定义接口
b)服务端和前端并行开发 ,依据接口进行服务端接口开发。 postman测试
c)前端开发用户操作界面,并请求服务端接口完成业务处理。 EasyMock模拟数据
d)前后端集成测试 最终前端调用服务端接口完成业务。 (联调)
5.测试人员测试
6.上线 运维人员
7.运维-留一两个人
a)在简历中写项目的开发周期,一般写的是6个月左右,开发时间最多2-3个月之间
8.开发其他项目
hrm-parent //管理jar:SpringBoot;SpringCloud,一些公共的内容
hrm-support-parent //springcloud微服务支持模块
hrm-eureka-server-1010
hrm-zuul-server-1020
hrm-config-server-1030
hrm-basic-parent //基础模块
hrm-basic-util //工具 : AjaxResult ,PageList
hrm-basic-common //公共模块: BaseDoamin ,BaseQuery
hrm-system-parent //系统管理中心
hrm-system-common //system的公共代码 :SystemQuery ,Domain
hrm-system-server-1040 //系统管理中心服务Controller,Service,Mapper
hrm-course-parent //课程中心
hrm-course-common //公共代码
hrm-course-server-1050 //课程中心服务
Hrm-redis-parent
Hrm-redis-feign //feign客户端接口模块
Hrm-redis-server-1060 //缓存服务
Hrm-elasticsearch-parent
Hrm-elasticsearch-feign //feign客户端接口模块
Hrm-elasticsearch-server-1070 //缓存服务
hrm-user-parent //用户中心
hrm-user-common //公共代码
hrm-user-server-1080 //用户中心服务
暂时不管,后面再来搭建
hrm-websites-parent
hrm-website-system
hrm-website-course
hrm-website-user
hrm-website-job
hrm-website-active
<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.0modelVersion>
<groupId>cn.itsource.hrmgroupId>
<artifactId>hrm-parentartifactId>
<packaging>pompackaging>
<version>1.0-SNAPSHOTversion>
<modules>
<module>hrm-basic-parentmodule>
<module>hrm-support-parentmodule>
<module>hrm-system-parentmodule>
modules>
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
properties>
<parent>
<groupId> org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.0.5.RELEASEversion>
parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-dependenciesartifactId>
<version>Finchley.SR1version>
<type>pomtype>
<scope>importscope>
dependency>
dependencies>
dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
dependency>
<dependency>
<groupId>org.apache.commonsgroupId>
<artifactId>commons-lang3artifactId>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
dependency>
dependencies>
project>
1)创建项目
hrm-parent
hrm-support-parent //springcloud微服务支持模块
hrm-eureka-server-1010
2)pom.xml
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
dependency>
3)配置文件
spring:
application:
name: hrm-eureka
server:
port: 1010
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机配置
4)入口类
/*注册中心启动类*/
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication1010{
public static void main( String[] args ){
SpringApplication.run(EurekaServerApplication1010.class) ;
}
}
5)启动测试
访问:http://localhost:1010
1)创建项目
hrm-parent
hrm-support-parent //springcloud微服务支持模块
hrm-zuul-server-1020
2)导入jar
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-zuulartifactId>
dependency>
3)做配置
#注册中心 , 服务的配置 ,zuul的配置(前缀,忽略服务 ,路由)
eureka:
client:
registry-fetch-interval-seconds: 5
serviceUrl:
defaultZone: http://localhost:1010/eureka/
instance:
prefer-ip-address: true #使用ip注册到Eureka
instance-id: zuul-server:1020 #指定客户端实例的ID
server:
port: 1020
spring:
application:
name: zuul-server #服务名
zuul:
prefix: "/hrm" #统一访问的前缀
ignored-services: "*" #所有的服务都不要使用服务名的方式去访问
routes:
hrm-system: "/system/**" #系统管理服务
retryable: true #是否开启重试功能
ribbon:
eager-load.enabled: true # 饥饿加载
ribbon:
MaxAutoRetries: 1 #对当前服务的重试次数
MaxAutoRetriesNextServer: 1 #切换相同Server的次数
OkToRetryOnAllOperations: false # 对所有的操作请求都进行重试,如post就不能重试,如果没做幂等处理,重试多次post会造成数据的多次添加或修改
ConnectTimeout: 10000 #请求连接的超时时间
ReadTimeout: 10000 #请求处理的超时时间
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 15000
#如果配置ribbon的重试,hystrix的超时时间要大于ribbon的超时时间
4)入口
//@EnableZuulProxy :开启zuul
@SpringBootApplication
@EnableZuulProxy
@EnableEurekaClient
public class ZuulServerApplication1020 {
public static void main(String[] args) {
SpringApplication.run(ZuulServerApplication1020.class) ;
}
}
5)启动测试
在Eureka中有Zuul就ok
Hrm-parent
hrm-basic-parent 基础模块
hrm-basic-util 工具
hrm-basic-common
基础工具模块(basic-util)
拷贝基础工具到该模块化中
基础公共模块
拷贝BaseQuery到模块中
有一个数据字典很多模块都要使用,先把他实现了
hrm-system-parent 系统管理中心
hrm-system-common 公共代码:domain,query
hrm-system-server-1040 系统管理中心服务: mapper,service,controller
<dependencies>
<dependency>
<groupId>cn.itsource.hrmgroupId>
<artifactId>hrm-system-commonartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>
dependencies>
server:
port: 1040
spring:
application:
name: hrm-system
eureka:
client:
service-url:
defaultZone: http://localhost:1010/eureka
instance:
prefer-ip-address: true
instance-id: hrm-system:1040 #指定客户端实例的ID
/**
* 主启动配置类
*/
@SpringBootApplication
@EnableEurekaClient
public class SystemServerApplication2010
{
public static void main( String[] args )
{
SpringApplication.run(SystemServerApplication2010.class);
}
}
能够注册到Eureka
如果已经在搭建zuul的时候配置了那么现在就不用配置了
zuul:
prefix: "/hrm" #统一访问的前缀
ignored-services: "*" #所有的服务都不要使用服务名的方式去访问
routes:
system-server: "/system/**" #系统管理服务
在真实项目开发中我们的服务模块,一般都要进行数据库操作,并且每个domain都有crud,需多次写重复代码。我们使用MybatisPlus,就不用写重复代码,并且还有模板的功能,可以一键生成daomin,query,mapper接口,mapper.xml,service,controller,非常好用。
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。*-
无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库
支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
支持 XML 热加载Mapper 对应的 XML支持热加载对于简单的 CRUD 操作甚至可以无 XML 启动
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
支持关键词自动转义:支持数据库关键词(order、key…)自动转义,还可自定义关键词
内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
内置性能分析插件:可输出 Sql 语句以及其执行时间建议开发测试时启用该功能,能快速揪出慢查询
内置全局拦截插件:提供全表 delete,update 操作智能分析阻断也可自定义拦截规则,预防误操作
内置 Sql 注入剥离器:支持 Sql 注入剥离,有效预防 Sql 注入攻击
我们的微服务要生成代码,也要连接数据库,需要集成MyBatis-Plus,同时我们需要搭建一个代码生成器模块,它需要集成Mybatis-plus和Velocity
可以重新开一个项目,也可以就在原来项目里面。为了不影响运行的代码重新开项目。
步骤分析:
1 创建springboot项目
2 导入jar
3 配置
3 写代码测试
<dependencies>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-generatorartifactId>
<version>3.4.0version>
dependency>
<dependency>
<groupId>org.apache.velocitygroupId>
<artifactId>velocity-engine-coreartifactId>
<version>2.2version>
dependency>
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger2artifactId>
<version>2.9.2version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.17version>
dependency>
dependencies>
resource/mybatiesplus-config-system.properties
#controller代码输出基本路径
OutputDirController=D:/workspace/hrm-workspace/hrm-parent/hrm-system-parent/hrm-system-server-1040/src/main/java
#service/mapper代码输出基本路径
OutputDirServiceMapper=D:/workspace/hrm-workspace/hrm-parent/hrm-system-parent/hrm-system-server-1040/src/main/java
#mapper.xml SQL映射文件目录
OutputDirXml=D:/workspace/hrm-workspace/hrm-parent/hrm-system-parent/hrm-system-server-1040/src/main/resources
#domain的输出路径
OutputDirBase=D:/workspace/hrm-workspace/hrm-parent/hrm-system-parent/hrm-system-common/src/main/java
#设置作者
author=wen'ge
#自定义包路径:基础包的路径
#项目根包
parent=itsource.cw
#controller包名
controller=web
#service包名 不生成service接口
service=service
#service实现类包名
service.impl=service.impl
#mapper数据库操作层包名
mapper=mapper
#数据表对应javabean包名
domain=domain
#自定义查询条件包名
query=query
#去除表的前缀
table_prefix=t_
#需要自动生成的表名
tableNames=t_systemdictionary,t_systemdictionaryitem
#数据库连接信息
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql:///hrm-system?serverTimezone=Asia/Shanghai&characterEncoding=utf-8
jdbc.user=root
jdbc.pwd=root
略(见代码生成器工程的源代码)
在代码生成器路径 resources/templates文件夹中,提供了2个自定义的模板:
query.java.vm
controller.java.vm
注意:
1.我们在使用时,主要需要修改的是它的 包路径
2.需要修改模板中,引入我们处自定义的工具类BaseQuery和PageList时,它的包路径
找一个表数据字典生成代码
hrm-basic-util模块拷贝工具类
去课件资料 reousrces/工具类 里面找
hrm-system-commo 导入mybatis-plus依赖
注意:hrm-system-common只需要导入 mybatis-plus-boot-starter,hrm-basic-util 依赖即可
<dependencies>
<dependency>
<groupId>itsource.cwgroupId>
<artifactId>hrm-basic-commonartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.4.0version>
dependency>
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger2artifactId>
<version>2.9.2version>
dependency>
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger-uiartifactId>
<version>2.9.2version>
dependency>
dependencies>
hrm-system-server-1040 服务调整
修改 hrm-system-server-1040 导入如下依赖:
<dependencies>
<dependency>
<groupId>itsource.cwgroupId>
<artifactId>hrm-system-commonartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>itsource.cwgroupId>
<artifactId>hrm-basic-utilartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.17version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.2.1version>
dependency>
dependencies>
#配置数据库的连接
spring:
application:
name: hrm-system
datasource:
type: com.alibaba.druid.pool.DruidDataSource # 连接池指定 springboot2.02版本默认使用HikariCP 此处要替换成Druid
driver-class-name: com.mysql.cj.jdbc.Driver # 这个驱动必须用新版,不能用老版
url: jdbc:mysql:///hrm-system?characterEncoding=utf-8&serverTimezone=GMT%2B8
username: root
password: root
druid: #这是关于德鲁伊连接池的核心配置
initial-size: 5 # 初始化时建立物理连接的个数
min-idle: 5 # 最小连接池连接数量,最小空闲数量
max-active: 20 # 最大连接池连接数量,最大活跃连接数
max-wait: 60000 # 配置获取连接等待超时的时间
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: true
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat,wall
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
stat-view-servlet:
allow: 0.0.0.0 # 允许哪些IP访问druid监控界面,多个IP以逗号分隔
login-username: admin # 设置登录帐号
login-password: 123456 # 设置登录密码
reset-enable: false # 是否允许重置数据
# url-pattern: /database/* # 默认访问根路径是:/druid/;也可以自定义设置
mybatis-plus: # mybatis的配置。下面的配置希望执行Sql语句可以打印到 控制台
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 开启mybatis-plus的sql打印
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
//Spring boot方式来对mybatis-plus3进行 mapper的扫描
@Configuration
@MapperScan("itsource.cw.mapper")
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
}
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;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
ApiInfo apiInfo = new ApiInfoBuilder()
.title("服务接口文档范例")
.description("springboot集成框架案例")
.version("1.0")
.build();
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo)
.select()
//以扫描包的方式
.apis(RequestHandlerSelectors.basePackage("cn.itsource.cw"))
.paths(PathSelectors.any())
.build();
}
}
package cn.itsource.hrm;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableEurekaClient
public class SystemServerApplication2010{
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
直接启动工程,并访问swagger-ui的首页,测试controller接口
Swagger-ui的访问地址: http://localhost:1040/swagger-ui.html
数据字典就是把系统中的一些不会经常变的一些数据项,使用2个表来维护,数据项的类型使用数据字典类型表,数据项的明细列表使用数据字典的明细表 来维护。
访问本项目地址:http://127.0.0.1:1040/swagger-ui.html
前端开发每次都要记录每个服务ip不好,期望只记忆网关ip就ok,需要做配置
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger2artifactId>
<version>2.9.2version>
dependency>
<dependency>
<groupId>io.springfoxgroupId>
<artifactId>springfox-swagger-uiartifactId>
<version>2.9.2version>
dependency>
package cn.itsource.hrm.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;
import springfox.documentation.swagger.web.UiConfiguration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("源码人力资源系统")
.description("源码人力资源接口文档说明")
.termsOfServiceUrl("http://localhost:1020")
.contact(new Contact("whale.chen", "", "[email protected]"))
.version("1.0")
.build();
}
}
package cn.itsource.hrm.config;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;
import java.util.ArrayList;
import java.util.List;
@Component
@Primary
public class DocumentationConfig implements SwaggerResourcesProvider {
@Override
public List<SwaggerResource> get() {
List resources = new ArrayList<>();
resources.add(swaggerResource("系统管理", "/hrm/system/v2/api-docs", "2.0"));
return resources;
}
private SwaggerResource swaggerResource(String name, String location, String version) {
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(name);
swaggerResource.setLocation(location);
swaggerResource.setSwaggerVersion(version);
return swaggerResource;
}
}
测试:http://127.0.0.1:1020/swagger-ui.html
项目原型架构图
项目原型架构搭建
Mybatisplus集成
项目原型架构搭建
写代码前先把流程搞清楚,要做哪些事情要知道,记不住可以看我的课件
有些内容,比如配置文件,可以拷贝SpringCloud项目中的,也可以去官网拷贝
代码敲完,做一遍总结
1.根据错误日志来,看不懂就翻译,或者百度这个错误日志
2.详细检查你的代码,根据老师的步骤检查一遍
3.必要时使用Debug排错
4.一个问题超过20分钟搞不定,就可以在群里问同学问老师了
1.你们的项目架构是怎么样的,你给我画出来
2.你在集成SpringCloud的时候遇到过什么问题
Session详解:http://www.cnblogs.com/lonelydreamer/p/6169469.html