【SpringBoot】入门精简

news2024/12/23 17:54:28

目录

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

1、本地创建示例: 

2、换数据源

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

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

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

3、选择依赖

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

 

1.3 目录结构

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

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

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

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

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

 

1.4 修改配置

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

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

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

接着就转换成这种格式了


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

错误示范:

1、datasource未配置到spring属下

2、url:后面没有空格

二、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连接数据库 :

 

mybatis生成代码:

 

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

           

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

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

@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切面实现全局分页功能。

测试: 

2.3 集成 Druid数据库连接池

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

 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/ 访问,首先要进行登录(账号密码可自行修改配置)

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

2.4 集成 Log日志管理

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

application.yml:

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1304670.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无人零售柜:快捷舒适购物体验

无人零售柜:快捷舒适购物体验 通过无人零售柜和人工智能技术,消费者在购物过程中可以自由选择商品,根据个人需求和喜好查询商品清单。这种自主选择的购物环境能够为消费者提供更加舒适和满意的体验。此外,无人零售柜还具有节约时间…

Python手撕kmeans源码

参考了两篇文章 K-Means及K-Means算法Python源码实现-CSDN博客 使用K-means算法进行聚类分析_kmeans聚类分析结果怎么看-CSDN博客 # 定义kmeans类 from copy import deepcopy from sklearn.datasets import make_blobs import numpy as np import matplotlib.pyplot as pltc…

如何充分准备面试,迅速融入团队并在工作中取得卓越成就

首先,关于如何筹备面试,首先需要对所申请公司与职位进行深入的调查了解,并依据可能提出的面试问题预先准备相应的答案,并提前调试面试所需的仪器设备。同时,也要注重自身形象的塑造。更为关键的是 1. 在计算机领域的面…

搭建你的知识付费小程序平台:源码解析与技术实现

知识付费小程序平台在当今数字化时代扮演着越来越重要的角色,为教育者和学习者提供了一个灵活、便捷的学习环境。本文将以关键词“知识付费小程序源码”为基础,探讨如何搭建一个功能强大的知识付费小程序平台,并提供一些基础的技术代码示例。…

串口通信(1)-硬件知识

本文讲解串口通信的硬件知识。让读者快速了解硬件知识,为下一步编写代码做基础。 目录 一、概述 二、串口通信分类 2.1信息的传送方向进行分类 2.2同步通信和异步通信 三、串口协议 3.1 RS232 3.1.1 电气特性 3.1.2 连接器的机械特性 3.1.3 连接类型 3.1…

08.仿简道云公式函数实战-逻辑函数-IF

1. IF函数 IF 函数可用于判断一个条件能否满足;如果满足返回一个值,如果不满足则返回另外一个值。 2. 函数用法 IF(logical_test,value_if_true, value_if_false) 其中各参数的含义如下: logical_test:必需&#…

JVM虚拟机系统性学习-对象存活判断算法、对象引用类型和垃圾清除算法

垃圾回收 在 JVM 中需要对没有被引用的对象,也就是垃圾对象进行垃圾回收 对象存活判断算法 判断对象存活有两种方式:引用计数法、可达性分析算法 引用计数法 引用计数法通过记录每个对象被引用的次数,例如对象 A 被引用 1 次&#xff0c…

被迫搬家,宽带迁移怎么办?

广州一栋违建烂尾楼,13年里从未停止出租,年年住满人。这栋楼没有贴外墙,裸露的水泥表面都被雨水腐蚀,很多阳台没有建好,只是简单加装了护栏,存在巨大安全隐患。 为什么烂尾楼年年满人呢? 因为它…

STL--关联式容器底层实现

关联式容器从底层实现分为两类:①红黑树:set、map、multiset和multimap ②哈希:unordered_set、unordered_map、unordered_multiset和unordered_multimap。 一、红黑树 它是⼀种特殊的⼆叉查找树。红⿊树的每个节点上都有存储位表示节点的颜…

Java入门项目--蚂蚁爱购

简介 这是一个靠谱的Java入门项目实战,名字叫蚂蚁爱购。 从零开发项目,视频加文档,十天就能学会开发JavaWeb项目,教程路线是:搭建环境> 安装软件> 创建项目> 添加依赖和配置> 通过表生成代码> 编写Ja…

vue3项目中使用vue-cropper实现截图效果

前言: 自用!!! 插件文档链接: https://www.npmjs.com/package/vue-cropper 使用步骤: 1、安装 npm install vue-cropper 2、项目中引入(全局引入);文档中有介绍如何局…

深度学习——第3章 Python程序设计语言(3.7 matplotlib库)

3.7 matplotlib库 目录 1 matplotlib库简介 2 pyplot的plot函数 3 matplotlib基础绘图函数示例 数据可视化有助于深度理解数据。 本节介绍绘制图形的基本方法。 1. matplotlib库简介 matplotlib官网 1.1 matplotlib库概述 matplotlib是Python优秀的数据可视化第三方库&a…

ChatGPT/GPT4+AI绘图+论文高效写作结合到底有多强大?你可以躺赢了

2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

LLM之RAG实战(三):LlamaIndex解锁自定义LLM关键步骤分块、索引、查询介绍

一、LLamaIndex介绍 LLamaIndex是一个由Jerry Liu创建的Python库,它可以使用语言模型对大型文档集进行高效的文本搜索和摘要。开发人员可以使用LLamaIndex快速添加私有/自定义数据,以增强现有的LLM。它不需要对大模型进行再训练,即可提供个性…

Todesk、向日葵等访问“无显示器”主机黑屏问题解决

我的环境是 ubuntu 22.04 安装 要安装 video dummy,请在终端中运行以下命令: sudo apt install xserver-xorg-video-dummy配置 video dummy 的配置文件请自行搜索 使用任何文本编辑器打开此文件。 我的是 /etc/X11/xorg.conf 默认配置文件包含以下内…

每日一练【长度最小的子数组】

一、题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 二、题目解析 经…

在我们日常生活有哪些东西是激光切割机做的

激光加工技术是当前最先进的切割技术,在工业生产中,能解决许多常规方法无法解决的难题,而且应用非常广。让人意想不到的是,很多生活中常见的物品,都是靠激光切割完成的。 它具备精密制造、柔性切割、异形加工、一次成型…

数据取证工具MemProcFS

MemProcFS 是一种将物理内存视为虚拟文件系统中的文件的简便方法。简单的点击内存分析,无需复杂的命令行参数!通过安装的虚拟文件系统中的文件或通过功能丰富的应用程序库访问内存内容和工件以包含在您自己的项目中。 链接GitHub - ufrisk/MemProcFS: M…

nodejs+vue+微信小程序+python+PHP的外卖数据分析-计算机毕业设计推荐django

构建一种完全可实现、可操作的开放源代码信息收集系统,帮助记者完成工作任务。采编人员仅需输入所收集到的网址及题目即可迅速启动收集工作并进行信息归类。 2.根据新的数据收集要求,采用云计算技术实现新的收集器的迅速部署。对于资料采集点的改版&…

深度学习 Day11——T11优化器对比实验

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 文章目录 前言一、我的环境二、代码实现与执行结果1.引入库2.设置GPU(如果使用的是CPU可以忽略这步)3.导入数据4.查…