今天和大家分享一个项目,集SpringBoot+Mybatis+redis+shiro+jwt+vue于一体的标准项目框架。
整个项目不涉及任何具体业务场景,只配置了一些常用功能,如:权限管理,用户管理,菜单管理等,外加redis中间件,以及很多好用的工具类(RedisUtil,Id生成器,JWt等),可以说是即拿即用,扩展性也非常强,下面就就进入主题,看看怎么使用吧。
一、SpringBoot + Mybatis介绍与搭建
不知道大家在开发过程中,有没有从0开始搭建一个项目,反正花Gie刚开始学Java的时候,被SSM折腾的死去活来,各种复杂的配置文件搞的我一直在崩溃的边缘试探,而近年来随着SpringBoot的普遍使用,新一批程序猿大军要舒服多了,因为SpringBoot简化了配置,让开发变得极其简单而快速。
1.1 SpringBoot是什么
SpringBoot 是 Pivotal 团队开发的一套全新框架,设计目的是为了简化项目初始搭建以及开发过程,去除了大量的 xml 配置文件,简化了复杂的依赖管理,配合各种 starter 使用,基本上可以做到自动化配置。如果你使用的是IDEA开发工具,你只要点击几下 [下一步] 就可以完成所有配置,实现轻松启动。
1.2 框架搭建介绍
搭建基础框架有多种方式,由于不是我们本文的重点,这里介绍两种最常用的方式,小伙伴们可以根据自己习惯来选取,花Gie一般使用IDEA来搭建,相当方便。
1.通过Spring Initializr创建
打开浏览器,输入地址start.spring.io,正常情况可以看到下面这个界面。
我们可以看到有很多配置项,这里简单介绍一下主要配置项的含义:
-
Project: 选择使用Maven或Gradle来创建项目;
-
Language: 开发语言;
-
Spring Boot: Spring Boot版本选择,默认最新版本(非里程碑和快照版本);
-
Project Metadata: 指定项目的一些基本信息:
- Group: 一般分为多个段,如com.basic.business,其中第一段为域,第二段为公司名称。域又分为org、com、cn等,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是,它的域是org(tomcat是非营利项目),公司名称是apache,artigactId是tomcat。
- Artfact: 一般是项目名或者模块名,和Group一起保证项目唯一性
- name:项目名称
- Description:项目描述
- Package Name:包名,如com.huage.base
- Packaging:打包方式
- Java :JDK版本号
-
Dependencies: 选择需要的依赖,它会在创建项目时自动在生成的pom.xml(Maven)或者build.gradle(Gradle)引入依赖。
填好所有信息后,点击Generate the project
按钮,Spring Initializr就会生成一个项目,这个项目会以zip文件的形式下载。解压到本地后,可以通过IDEA导入项目。
2.通过IDEA创建
依次点击IDEA菜单栏:File -> New -> Project,打开如下窗口:
选择好JDK版本后,点击下一步会看到如下界面,是不是很熟悉,这个和上面说的网页端操作是一样的,这里就不再赘述,继续点击【下一步】
下面这里是我们初始化依赖的地方,我们可以根据项目需要合理选择,也可以后续在pom文件中添加,此外这里还可以选择SpringBoot版本,一般使用最新稳定版本。
注意:如果是官方start.spring.io生成的,不是阿里云https://start.aliyun.com/ 需要注意很新的版本如2.5.2 可能parent依赖一直下载不下来,如果你的仓库加速又是配置阿里云的加速 有可能是加速仓库还没有这个版本
1.3 数据库设计
因为本项目不涉及任何具体业务,所以只需要一些基础表即可,如:sys_user、sys_role、sys_menu等。
1.4【标准版本】基础信息配置
基础项目搭建完成后,此时整个项目只有空的文件夹和一个空的application.properties,这时我们需要对数据库和依赖包以及mybatis进行配置。
- 1. 配置文件
server.port=18082 spring.application.name=first-program # mysql db spring.datasource.url=jdbc:mysql://localhost:3306/firstProgram?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver # mybatis mybatis.type-aliases-package=com.basic.business mybatis.mapper-locations=classpath:mapper/*.xml pagehelper.helper-dialect= mysql pagehelper.reasonable= false pagehelper.support-methods-arguments= true pagehelper.params= count=countsql
- 2. pom文件
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!--mysql 驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version> <scope>runtime</scope> </dependency> <!--druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>jakarta.validation</groupId> <artifactId>jakarta.validation-api</artifactId> <version>2.0.2</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>${pagehelper-spring-boot-starter.version}</version> </dependency>
二、【标准版本】 集成Swagger
EasyCode
代码生成后,会自动带有Swagger
注解,我们需要两步配置即可完成Swagger注解引入
- pom依赖
<!--swagger配置--> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> <version>1.5.21</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
这里依赖 提示找不到依赖或者报java.lang.NumberFormatException:For input string: “”错误
所以建议上面使用完整pom依赖
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> <exclusions> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> </exclusion> <exclusion> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-annotations</artifactId> <version>1.5.22</version> </dependency> <dependency> <groupId>io.swagger</groupId> <artifactId>swagger-models</artifactId> <version>1.5.22</version> </dependency>
新建配置
@Configuration @EnableSwagger2 public class SwaggerConfig { //是否开启swagger @Value("${swagger.enable}") private boolean enableSwagger; @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .enable(enableSwagger) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("标准版本API文档") .description("") .version("1.0") .build(); } }
自己新建一个controller写点swagger注解 注意下面访问地址是适合swagger2.0 swagger3.0去除了swagger-ui.html
接下来我们启动一下项目,在浏览器输入地址http://127.0.0.1:18082/swagger-ui.html,看看效果吧,如下图,我们可以正常看到swagger界面,尝试调用了一下接口,也都可以正常请求: