【SpringBoot】入门精简
作者:mmseoamin日期:2023-12-13

目录

一、初识 SpringBoot

1.1 介绍

1.2 项目创建

1.3 目录结构

1.4 修改配置

二、SpringBoot 集成

2.1 集成 Mybatis框架

2.2 集成 Pagehepler分页插件

2.3 集成 Druid数据库连接池

2.4 集成 Log日志管理


一、初识 SpringBoot

1.1 介绍

        Spring Boot是一个用于简化Spring应用程序开发的框架,提供了一种快速开发、简化配置的方式。Spring Boot通过约定大于配置的原则,尽量减少开发者在项目配置方面的工作。

在Spring Boot中,你可以通过简单的配置来引入需要的功能,而无需手动配置大量的XML文件或Java代码。它也提供了一些常用的依赖项,以方便你快速构建各种类型的应用程序,如Web应用、RESTful服务、批处理等。

1.2 项目创建

官方:Getting Started | Building an Application with Spring Boot

【SpringBoot】入门精简,第1张

1、本地创建示例: 

【SpringBoot】入门精简,第2张

2、换数据源

        这是一个默认的springboot项目默认创建界面,在这里需要注意的是 Server URL地址默认是https://start.spring.io/ 该地址需要更高的JDK(Java 17以上)。

博主使用的是Java8,所以更改了一下阿里云的数据源:https://start.aliyun.com/

当然也可以进入到该网址进行下载项目:

【SpringBoot】入门精简,第3张

3、选择依赖

点击NEXT之后就会出现如下界面:让你选择该项目所需要的一些工具包

【SpringBoot】入门精简,第4张

 

1.3 目录结构

点击CREATE        创建好之后可以看到该项目结构没有/WEB-INF的目录,Spring Boot项目不需要直接包含 /META-INF 目录,因为 Spring Boot 提倡的是约定大于配置,许多配置信息都被集成到了application.yml配置文件中。

【SpringBoot】入门精简,第5张

  • src/main/java:主程序入口 BootApplication,可以通过直接运行该类来启动SpringBoot应用

  • src/main/resources:配置目录,该目录用来存放应用的一些配置信息,比如应用名、服务端口、数据库配置等。由于我们应用了Web模块,因此产生了 static目录,前者用于存放静态资源,如图片、CSS、JavaScript等;后者用于存放Web页面的模板文件。

  • src/test:单元测试目录,生成的 ApplicationTests 通过 JUnit4实现,可以直接用运行 SpringBoot应用的测试。

  • application.properties/application.yml:用于存放程序的各种依赖模块的配置信息,比如:服务端口,数据库连接配置等。

     

    1.4 修改配置

    【SpringBoot】入门精简,第6张

            首先我们需要看到该配置的文件格式是properties,在实际运用中大量的配置信息以这样的格式显然是不够简洁明了的,所以需要把它修改为yml格式。

    在这给大家推荐一个插件可以一键在这两种格式之间转换:Convert YAML and Properties File

    【SpringBoot】入门精简,第7张

    右击该配置文件会出现这个选项:

    【SpringBoot】入门精简,第8张

    接着就转换成这种格式了

    【SpringBoot】入门精简,第9张


    这里就需要按这种格式就行编写,不然就无法找到指定配置的信息;

    错误示范:

    1、datasource未配置到spring属下

    【SpringBoot】入门精简,第10张

    2、url:后面没有空格

    【SpringBoot】入门精简,第11张

    二、SpringBoot 集成

    2.1 集成 Mybatis框架

    application.yml

    mybatis:
      # mapper.xml所在的位置
      mapper-locations: classpath:mappers/*xml
      type-aliases-package: com.ycxw.boot.entity
    server:
      port: 8080
    spring:
      #数据源配置
      datasource:
        url: jdbc:mysql://localhost:3306/bookshop
        username: root
        password: 123456
        driver-class-name: com.mysql.cj.jdbc.Driver

     

    idea连接数据库 :

    【SpringBoot】入门精简,第12张

    【SpringBoot】入门精简,第13张

     

    mybatis生成代码:

    【SpringBoot】入门精简,第14张

    【SpringBoot】入门精简,第15张 

    最后编写的项目结构与运行测试:

    【SpringBoot】入门精简,第16张           【SpringBoot】入门精简,第17张

    注意:配置好mybatis后并将代码接口编写完毕运行项目时报这个错,原因是mapper这个包没有在启动类进行扫描

    【SpringBoot】入门精简,第18张

    解决:在启动类添加此注释

    @MapperScan("com.ycxw.boot.mapper")
    package com.ycxw.boot;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    @MapperScan("com.ycxw.boot.mapper")
    @SpringBootApplication
    public class BootApplication {
        public static void main(String[] args) {
            SpringApplication.run(BootApplication.class, args);
        }
    }
    

     

    2.2 集成 Pagehepler分页插件

    application.yml

    pagehelper:
      # 配置方言
      helperDialect: mysql
      # 分页合理化
      reasonable: true
      # mapper方法上的分页参数
      supportMethodsArguments: true
      # 查询数量
      params: count=countSql

    Controller:

    package com.ycxw.boot.controller;
    import com.github.pagehelper.PageHelper;
    import com.ycxw.boot.page.PageBean;
    import com.ycxw.boot.service.BookService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    /**
     * @author 云村小威
     * @create 2023-12-12 14:59
     */
    @RestController
    @RequestMapping("/book")
    public class BookController {
        @Autowired
        private BookService bookService;
        @RequestMapping("/list")
        public Object list(PageBean pageBean) {
            PageHelper.startPage(pageBean.getPage(),pageBean.getRows());
            return bookService.list();
        }
    }
    

            在此之前需要导入编写好的分页工具类,当前这样写那每次都要调分页方法,所以可以配置AOP切面实现全局分页功能。

    测试: 

    【SpringBoot】入门精简,第19张【SpringBoot】入门精简,第20张

    2.3 集成 Druid数据库连接池

            综合一下图式Druid连接池是最好的,而spring自带是的HikariCP连接池,所以我们需要将让进行替换。

    【SpringBoot】入门精简,第21张

     application.yml:

    spring:
      #数据源配置
      datasource:
        url: jdbc:mysql://localhost:3306/bookshop
        username: root
        password: 123456
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
          # 初始化时建立物理连接的个数
          initial-size: 5
          # 最小连接池数量
          min-idle: 5
          # 最大连接池数量
          max-active: 20
          #配置获取连接等待超时的时间
          max-wait: 60000
          #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
          time-between-eviction-runs-millis: 60000
          # 一个连接在池中最小生存的时间,单位是毫秒
          min-evictable-idle-time-millis: 30000
          # 用来检测连接是否有效的 sql,要求是一个查询语句
          validation-query: SELECT 1 FROM DUAL
          # 建议配置为 true,不影响性能,并且保证安全性
          test-while-idle: true
          # 申请连接时执行 validationQuery 检测连接是否有效
          test-on-borrow: true
          # 归还连接时执行 validationQuery 检测连接是否有效
          test-on-return: false
          # 是否缓存 preparedStatement,即 PsCache
          # PSCache 对支持游标的数据库性能提升巨大,比如说 oracle,而 mysql 则建议关闭
          pool-prepared-statements: true
          # 要启用 PSCache,必须配置大于0
          max-pool-prepared-statement-per-connection-size: 20
          # 配置监控统计拦截的filters,去掉后监控界面sql无法统计
          filter:
            stat:
              merge-sql: true
              slow-sql-millis: 5000
          # 基础监控配置
          web-stat-filter:
            enabled: true
            url-pattern: /*
            exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
            session-stat-enable: true
            session-stat-max-count: 100
          stat-view-servlet:
            enabled: true
            url-pattern: /druid/*
            reset-enable: true
            login-username: admin #设置监控页面的登录名和密码
            login-password: 123456
            allow: 127.0.0.1 #deny: 192.168.1.100

            Druid有个不一样的优点就是能对项目进行监控,在Druid中已配置监控信息通过http://localhost:8080/druid/ 访问,首先要进行登录(账号密码可自行修改配置)

    【SpringBoot】入门精简,第22张

     登入成功后就能看到项目相关的数据:

    【SpringBoot】入门精简,第23张

    2.4 集成 Log日志管理

    为了在开发中能够实时看到我们的调用方法的信息与sql语句,所以需要配置log日志管理。

    application.yml:

    #log日志配置
    logging:
      level:
        #指定项目目录输入日志信息
        com.ycxw.boot.mapper: debug

    这里设置了一个特定包(com.ycxw.boot.mapper)的日志级别为 debug。

            在开发阶段将某个包的日志级别设置为 debug 以便更详细地了解系统行为,而在生产环境中将其设置为较低的级别,如 info 或 warn,以减少冗余信息。

    最后将会在控制台把日志信息进行打印出来:

    【SpringBoot】入门精简,第24张