SpringBoot标准化搭建

今天和大家分享一个项目,集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: 指定项目的一些基本信息:

    1. Group: 一般分为多个段,如com.basic.business,其中第一段为域,第二段为公司名称。域又分为org、com、cn等,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是,它的域是org(tomcat是非营利项目),公司名称是apache,artigactId是tomcat。
    2. Artfact: 一般是项目名或者模块名,和Group一起保证项目唯一性
    3. name:项目名称
    4. Description:项目描述
    5. Package Name:包名,如com.huage.base
    6. Packaging:打包方式
    7. 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界面,尝试调用了一下接口,也都可以正常请求:

 

 

posted @ 2021-08-11 13:32  山河永慕~  阅读(162)  评论(0编辑  收藏  举报