【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

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/*xmltype-aliases-package: com.ycxw.boot.entityserver:port: 8080spring:#数据源配置datasource:url: jdbc:mysql://localhost:3306/bookshopusername: rootpassword: 123456driver-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 {@Autowiredprivate 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/bookshopusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcedruid:# 初始化时建立物理连接的个数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,必须配置大于0max-pool-prepared-statement-per-connection-size: 20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计filter:stat:merge-sql: trueslow-sql-millis: 5000# 基础监控配置web-stat-filter:enabled: trueurl-pattern: /*exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"session-stat-enable: truesession-stat-max-count: 100stat-view-servlet:enabled: trueurl-pattern: /druid/*reset-enable: truelogin-username: admin #设置监控页面的登录名和密码login-password: 123456allow: 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.hqwc.cn/news/268358.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件开发流程分析

软件开发流程分析 相关概念1 原型设计2 产品设计3 交互设计4 代码实现详细步骤 相关概念 前端:自研API,调用第三放API 后端:自研API,第三方API 数据库:Mysql,数据采集,数据迁移 服务器&#xf…

nuitka Unknown property box-shadow,transition,transform

nuitka 打包后,控制台的错误解决方法 nuitka --standalone --show-memory --show-progress --nofollow-imports --follow-import-toneed --output-dirout --windows-icon-from-ico./static/test.ico mainUI2.py 由于Qt样式表不是CSS,QSS基于CSS2.1&…

绘图示例---QT手动调用绘图事件,按钮控制图片

效果: 点击 “移动” 图片向右移动20,点击 “西理win嘛” 图片每秒向右移动20 QQ录屏20231212164128 下面时代码详解: 注意使用UI和代码实现按钮的不同 UI: ui->pushButton->setGeometry(windowWidth-105, windowHeight-25, 100, 20);…

windows下docker环境安装

开启硬件虚拟化技术 win10中开启 Hyper-V Win10 下是否开启硬件虚拟化技术,在控制面板,启用 window 功能,找到 Hyper-V 选项,点勾选确认。如图: Windows 11 家庭中文版新增 Hyper-V选项 注意以下的解决方案来自win1…

[MySQL]SQL优化之sql语句优化

🌈键盘敲烂,年薪30万🌈 目录 一、索引优化 回顾: 📕索引分类: 📕索引失效: 📕设计原则: 📕SQL性能分析 二、SQL优化 语句优化 &#x1f4d…

激活企业知识力量,我有才知识付费平台:开启专属知识付费新纪元

在当今信息爆炸的时代,知识管理已经成为了每个人必须面对的问题。然而,市面上的知识付费平台大多数都是通用的,无法满足个性化需求。 因此,我有才提供了一款专属定制的适合个人的知识付费平台。核心产品能力如下: 一…

SpringBoot入门及整合

前言 Spring Boot是一个基于Spring框架的快速开发脚手架,它简化了Spring应用的初始化和搭建过程,提供了众多便利的功能和特性并且使用"习惯优于配置"的理念,通过提供默认设置来快速搭建应用,同时也保留了灵活性以进行定…

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

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

「Swift」Xcode多Target创建

前言:我们日常开发中会使用多个环境,如Dev、UAT,每个环境对应的业务功能都不同,但每个环境之间都只存在较小的差异,所以此时可以使用创建多个Target来实现,每个Target对应这个一个App,可以实现一…

人工智能数据集可视化统计分析工具:快速了解你的数据集

人工智能数据集可视化统计分析工具:快速了解你的数据集 简介特征示例报告安装用法 简介 Lightly Insights:可以轻松获取关于机器学习数据集基本洞察的工具,可以可视化图像数据集的基本统计信息,仅需提供一个包含图像和对象检测标…

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针测试

目录 前言 Tessy 如何进行打桩操作 普通桩 高级桩 手写桩 Tessy单元测试之指针相关测试注意事项 有类型的指针(非函数指针): 有类型的函数指针: void 类型的指针: 结语 前言 进行单元测试之后,但凡…

轻材料绿建筑:气膜结构建筑的低碳环保

随着全球环保意识的逐渐增强,建筑行业也在积极寻求更加环保、低碳的设计和施工方案。在这一潮流中,气膜结构建筑以其轻盈、独特的设计成为了低碳环保建筑的代表之一。本文将深入探讨气膜结构建筑的轻材料特性以及其在低碳环保方面的良好表现。 轻材料轻建…