栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot - 快速搭建

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot - 快速搭建

文章目录
  • 前言
  • 一、简单项目的创建
  • 二、常用依赖的引入
  • 三、常用配置的编写
  • 四、逆向工程的使用
  • 五、常用类的编写
    • 1. 自定义常量类
    • 2. 自定义注解类
    • 3. 自定义枚举类
    • 4. 自定义异常类
    • 5. 通用响应对象
    • 6. 简单接口编写
    • 7. 常用的工具类
  • 六、网盘下载


前言

关于怎么搭建 SpringBoot 项目,我相信大部分开发者自己都能搭建好,至于我为什么还要写,主要是我自己觉得搭一个项目挺麻烦的,想搞一个基础的模子,以后学习其它的技术就可以直接引用这个模子,写下笔记便于日后回顾和修改,顺便发下博客。

注意:以下项目创建方式以及项目内容完全是根据个人喜好而搭建的,仅具借鉴意义~~


一、简单项目的创建

这里项目的创建,我使用的工具是 IDEA,还有一个很重要的事情就是管理项目,这里我建议项目最好有一个集中的地方管理,所以我创建了一个 my-project 的文件夹专门用于管理自己的项目。

打开 IDEA 工具,点击 File -> New -> Project... 创建一个项目

选择 Sring Initializr (如果你用的是 IDEA 社区版的可能没有这个选项),完善以下资料,然后点击 Next

选择 SpringBoot 版本,点击 Finish

然后一个最简单的 spring-boot 项目就建好了,如果你只是为了创建一个 spring-boot 项目的话,到这里就可以结束了,以下内容很多东西都是按照我个人意愿去编写的,并不具有通用性,但是仍可借鉴使用~~

简单完善一下目录结构

  • com.duojiala.mikeboot
    • common ------------------------------------公共定义类
    • config ----------------------------------------配置类
    • controller -----------------------------------控制层
    • dao -------------------------------------------dao层
    • domain
      • annotations --------------------------注解类
      • bean -----------------------------------自定义类
      • dto --------------------------------------组装对象类
      • entity ----------------------------------实体类
      • enums ---------------------------------枚举类
      • req --------------------------------------请求体
      • resp ------------------------------------响应体
    • exceptions ------------------------------自定义异常类
    • service ------------------------------------服务层
      • imp -------------------------------------实现类
    • utils -------------------------------------------工具类

PS:以上并非标准,项目结构你可以根据自己的需求或者喜好去设计

二、常用依赖的引入

之前在创建项目的时候其实是可以选择添加依赖的,但是我没有去做,所以如果你按照我上述步骤创建项目的话,pom.xml 文件中只有两个依赖,如下:

接下来就是引入一些常用的依赖,供大家参考:

SpringBoot 项目的启动依赖:如果没有添加该依赖,启动类一运行会直接停止

        
            org.springframework.boot
            spring-boot-starter-web
            compile
        

lombok 依赖插件:方便实体类 bean 快速生成 get set方法,从而不用手动添加

        
            org.projectlombok
            lombok
        

通用Mapper依赖:是对底层 sql 进行了抽象封装,不需要考虑 sql 怎么写,只需要按照逻辑思维,遵循 tkmybatis 的语法即可实现数据库操作。

        
            tk.mybatis
            mapper-spring-boot-starter
            2.1.5
        

JDBC驱动包:用 JDBC 连接 MySQL 数据库时必须使用该 jar 包,能够与数据库建立连接、发送 SQL 语句以及处理结果。

        
            mysql
            mysql-connector-java
        

校验参数:就是一个规范,所有实现类必须是线程安全的,提供一些注解,但并不提供实现,可以根据需求去写一些有校验功能的注解。

        
            org.springframework.boot
            spring-boot-starter-validation
        

Fastjson:是一个 Java 语言编写的高性能功能完善的 JSON 库。它采用一种 “假定有序快速匹配” 的算法,把 JSON Parse 的性能提升到极致,是目前 Java 语言中最快的 JSON 库。Fastjson 接口简单易用,已经呗广泛使用在序列化、协议交互、Web 输出、Android 客户端等多种应用场景。

        
            com.alibaba
            fastjson
            1.2.51
        

Spring web依赖

        
            org.springframework
            spring-web
        

mybatis 自动配置依赖

        
            org.mybatis.spring.boot
            mybatis-spring-boot-autoconfigure
            2.1.1
        

表格依赖

        
            com.alibaba
            easyexcel
            2.2.7
        
        
            org.apache.poi
            poi-ooxml
            3.17
        

添加 mybatis 逆向工程插件,generator 的配置文件这里我放在 /resources/generator 目录下

            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.6
                
                    
                        ${basedir}/src/main/resources/generator/generatorConfig.xml
                    
                    true
                    true
                
                
                    
                        mysql
                        mysql-connector-java
                        8.0.13
                    
                    
                        tk.mybatis
                        mapper
                        4.1.5
                    
                
            

最后我 pom.xml 文件的配置如下:



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.4.RELEASE
         
    
    com.duojiala
    mike-boot
    0.0.1-SNAPSHOT
    mike-boot
    Demo project for Spring Boot
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-web
            compile
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        

        
            org.apache.commons
            commons-lang3
            3.10
        

        
            org.projectlombok
            lombok
        

        
            tk.mybatis
            mapper-spring-boot-starter
            2.1.5
        

        
            mysql
            mysql-connector-java
        

        
            org.springframework.boot
            spring-boot-starter-validation
        

        
            com.alibaba
            fastjson
            1.2.51
        

        
            org.springframework
            spring-web
        

        
            org.mybatis.spring.boot
            mybatis-spring-boot-autoconfigure
            2.1.1
        

        
            com.alibaba
            easyexcel
            2.2.7
        
        
            org.apache.poi
            poi-ooxml
            3.17
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            

            
                org.mybatis.generator
                mybatis-generator-maven-plugin
                1.3.6
                
                    
                        ${basedir}/src/main/resources/generator/generatorConfig.xml
                    
                    true
                    true
                
                
                    
                        mysql
                        mysql-connector-java
                        8.0.13
                    
                    
                        tk.mybatis
                        mapper
                        4.1.5
                    
                
            
        
    



三、常用配置的编写

这里自动创建的项目,配置文件默认是 properties 的文件,这里我改用成 yml 格式的(仅仅是个人习惯的问题)

application.yml 常用配置的编写:

server:
  port: 8868
  servlet:
    context-path: /mike

spring:
  application:
    name: mike-boot
  # 数据库配置
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mike?characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
    hikari:
      username: 'root'
      password: 'root'
      driver-class-name: 'com.mysql.cj.jdbc.Driver'

mybatis:
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
四、逆向工程的使用

之前在常用依赖引入中有引入 mybatis 逆向工程的插件,这里主要就是去编写逆向工程的一些配置文件,以及使用

首先需要在 resources 目录下创建文件夹 com/duojiala/mikeboot/dao 目录(要和你 dao 目录相一致),如果你用 IDEA 创建的话,切记不可直接 com.duojiala.mikeboot.dao 这样创建,因为这样创建的文件夹只是一个名字叫做 com.duojiala.mikeboot.dao 的文件夹,并非多层目录,比如:

用 IDEA 要一个一个创建

在创建一个 generator 的文件夹,该文件夹下面加上两个配置文件 config.properties 和 generatorConfig.xml,做完以上步骤之后大概是这样的

config.properties 中配置编写:

jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mike?useSSL=false&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&serverTimezone=GMT%2B8

jdbc.user=root
jdbc.password=root

javaModelTargetProject=src/main/java
javaModelTargetPackage=com.duojiala.mikeboot.domain.entity
mapperXMLTargetProject=src/main/resources
mapperXMLTargetPackage=com.duojiala.mikeboot.dao
mapperTargetProject=src/main/java
mapperTargetPackage=com.duojiala.mikeboot.dao

这里你要换成你自己的数据库,以及对应的映射关系要以你自己的项目去修改。

generatorConfig.xml 中配置编写:




    

    
        
        

        
            
            
        

        
        

        
        
        
        
        
        

        
        

现在我连接的是我本地数据,该库里面只有一张 user 表

现在通过 mybatis 逆向工程生成 user 表对应的 实体类 和 mapper 文件,按如下步骤

执行完可以看见项目中已经生成了所配置数据库中所有表的映射实体类和 Mapper 文件

如果你想要针对某一张表生成对应的映射实体类和 Mapper 文件,可将 generatorConfig.xml 文件中

标签中的 % 改成表明,例如:只生成 user 表的

        

同时,还需要在启动类上加上 @MapperScan 的注解扫描 mapper:@MapperScan(basePackages = {"com.duojiala.mikeboot.dao"})

五、常用类的编写 1. 自定义常量类

位于 common 目录下,创建示例类 DefineConstants.java

public class DefineConstants {

    
    public static final String DEF_NUMBER = "0";

    
    public static final String DEF_MONEY = "0.00";
}
2. 自定义注解类

位于 annotations 目录下,创建示例类 Describe.java

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
//@Constraint(validatedBy = EnumParamCheck.DecimalParamCheckValidator.class)
public @interface Describe {
    String desc();
}
3. 自定义枚举类

位于 enums 目录下,创建性别枚举类 GenderEnum.java

@Getter
@AllArgsConstructor
public enum GenderEnum {
    WOMAN(0,"女"),
    MAN(1,"男")
    ;
    private final int type;
    private final String desc;

    public static GenderEnum getGenderEnum(int type) {
        return Stream.of(values()).filter(value -> value.getType()==type).findFirst().orElse(null);
    }

    public static String getDescByType(int type) {
        GenderEnum genderEnum = getGenderEnum(type);
        if (genderEnum==null) return null;
        return genderEnum.getDesc();
    }
}

位于 enums 目录下,再创建一个自定义异常枚举 ExceptionEnum.java

@AllArgsConstructor
@Getter
@ToString
public enum ExceptionEnum {

    BAD_REQUEST(301, "错误的请求"),
    NOT_FIND(302,"未找到对应数据")
    ;
    private final int code;
    private final String msg;
}
4. 自定义异常类

位于 exceptions 目录下,创建自定义公共异常 CommonException.java

public class CommonException extends RuntimeException{

    private ExceptionEnum exceptionEnum;

    public CommonException(ExceptionEnum exceptionEnum) {
        super(exceptionEnum.getMsg());
        this.exceptionEnum = exceptionEnum;
    }

    public void setExceptionEnum(ExceptionEnum exceptionEnum) {
        this.exceptionEnum = exceptionEnum;
    }
    
    public ExceptionEnum getExceptionEnum() {
        return exceptionEnum;
    }

    @Override
    public String getMessage() {
        return this.exceptionEnum.getMsg();
    }
}
5. 通用响应对象

位于 dto 目录下,创建一个通用的响应对象 ResponseBean.java

@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
@Slf4j
public class ResponseBean {

    private int code;
    private String msg;
    private Object data;

    public static int SUCCESS_CODE = 200;
    public static int ERROR_CODE = 300;

    public static String SUCCESS_MSG = "Success";
    public static String ERROR_MSG = "Error";

    public static ResponseBean success() {
        return ResponseBean.builder()
                .code(SUCCESS_CODE)
                .msg(SUCCESS_MSG)
                .build();
    }

    public static ResponseBean success(Object data) {
        return ResponseBean.builder()
                .code(SUCCESS_CODE)
                .msg(SUCCESS_MSG)
                .data(data)
                .build();
    }

    public static ResponseBean error() {
        return ResponseBean.builder()
                .code(ERROR_CODE)
                .msg(ERROR_MSG)
                .build();
    }

    public static ResponseBean error(int code, String msg) {
        return ResponseBean.builder()
                .code(code)
                .msg(msg)
                .build();
    }
}
6. 简单接口编写

请求体类,放在 req 目录下,创建 IdReq.java

@Data
@NoArgsConstructor
@AllArgsConstructor
public class IdReq {
    private String id;
}

响应体类,放在 resp 目录下,创建 UserInfoResp.java

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class UserInfoResp {
    private String id;//用户id
    private String name;//用户名称
    private String birthday;//用户生日
    private String gender;//用户性别
}

Controller 类,位于 controller 目录下,创建 UserController.java

@Slf4j
@RestController
@RequestMapping(value = "/user")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@CrossOrigin(origins = "*", methods = {RequestMethod.POST, RequestMethod.GET})
public class UserController {

    private final UserService userService;

    @PostMapping(value = "/query-user-info")
    public ResponseBean queryUserInfo(@RequestBody @Validated IdReq req) {
        return ResponseBean.success(userService.queryUserInfo(req));
    }
}

Service 类,位于 service 目录下,创建 UserService.java

public interface UserService {

    UserInfoResp queryUserInfo(IdReq req);
}

Service 实现类,位于 impl 目录下,创建 UserServiceImpl.java

@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class UserServiceImpl implements UserService {

    private final UserMapper userMapper;

    @Override
    public UserInfoResp queryUserInfo(IdReq req) {
        User user = userMapper.selectByPrimaryKey(req.getId());
        if (user == null) {
            throw new CommonException(ExceptionEnum.NOT_FIND);
        }
        return UserInfoResp.builder()
                .id(user.getId().toString())
                .name(user.getName())
                .birthday(user.getBirthday())
                .gender(GenderEnum.getDescByType(user.getGender()))
                .build();
    }
}

一个根据 id 查询用户的简单方法就写完了,postman 测试正常

7. 常用的工具类

位于 utils 目录下,这里我复制了些我常用的工具类

  • CommonUtil ---------------------------------------- 通用工具类
  • DateUtil ---------------------------------------------- 时间工具类
  • EnumUtil -------------------------------------------- 枚举工具类
  • PageHelperUtil ------------------------------------ 分页工具类
  • PureNetUtil ----------------------------------------- 网络访问工具类
  • StringTool ------------------------------------------- 字符串工具类

六、网盘下载

以下是我搭建这个基础 SpringBoot 项目的网盘下载链接:

链接:百度网盘
提取码:w7yo

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980749.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号