【SpringBoot】入门精简

目录

一、初识 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张图片


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

错误示范:

1、datasource未配置到spring属下

【SpringBoot】入门精简_第9张图片

2、url:后面没有空格

【SpringBoot】入门精简_第10张图片

二、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】入门精简_第11张图片

【SpringBoot】入门精简_第12张图片

 

mybatis生成代码:

【SpringBoot】入门精简_第13张图片

【SpringBoot】入门精简_第14张图片 

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

【SpringBoot】入门精简_第15张图片           【SpringBoot】入门精简_第16张图片

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

【SpringBoot】入门精简_第17张图片

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

@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】入门精简_第18张图片【SpringBoot】入门精简_第19张图片

2.3 集成 Druid数据库连接池

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

【SpringBoot】入门精简_第20张图片

 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】入门精简_第21张图片

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

【SpringBoot】入门精简_第22张图片

2.4 集成 Log日志管理

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

application.yml:

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

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

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

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

【SpringBoot】入门精简_第23张图片

你可能感兴趣的:(springboot,+,mybatis-plus,java,spring,boot,mybatis)