【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.mzph.cn/news/216273.shtml

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

相关文章

猎豹浏览器如何设置ip使用?socks5在网络安全中有什么优势?

猎豹浏览器如何设置ip使用?socks在网络安全中有什么优势? 一、猎豹浏览器如何设置ip使用? 在使用猎豹浏览器时,可以通过以下步骤来设置IP使用: 1. 打开猎豹浏览器,点击右上角的“菜单”按钮,在…

有趣的数学 数学建模入门三 数学建模入门示例两例 利用微积分求解

一、入门示例1 1、问题描述 某宾馆有150间客房,经过一段时间的经营,该宾馆经理得到一些数据:如果每间客房定价为200元,入住率为55%;定价为180元,入住率为65%;定价为160元…

圆通单号查询,圆通速递物流查询,用表格导出单号的详细物流信息

批量查询圆通速递单号的物流信息,以表格的形式导出单号的详细物流信息。 所需工具: 一个【快递批量查询高手】软件 圆通速递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,并登录 步骤2:点击主…

解决canvas清晰度问题devicePixelRatio

视频教程 解决canvas清晰度的问题【渡一教育】_哔哩哔哩_bilibili 检测网页本身是否缩放 ,即缩放倍率 window.devicePixelRatio 为了获得清晰图像,需要遵循以下公式 原始尺寸样式尺寸*缩放倍率 在项目中,canvas里的原始尺寸一般与css中的样式尺寸一样,所以在写js代码时,涉…

数据库 02-03补充 聚合函数--一般聚合分组和having

聚合函数: 01.一般的聚合函数: 举个例子: 一般聚合函数是用于单个元祖,就是返回一个数值。 02.分组聚合:可以返回多个元祖 举个例子: 分组的注意: 主要的是根据分组的话,一个…

盲盒小程序搭建:年入百W的“盲盒经济”

盲盒作为一种新的商业模式,正引领着新的消费热潮。尤其是在当下年轻人群体中,盲盒的影响力非常大。 盲盒作为一种新的消费方式,因其具备的不确定性、未知性、惊喜性,刺激着消费者的购买欲。在现在的商城中,盲盒的身影…

AutoAnimate动画库,仅需一行代码

插件官网,支持react,vue AutoAnimate - Add motion to your apps with a single line of code 自动加动画原理 AutoAnimate 加动画的原理也很简单,监听绑定的 DOM 节点里 DOM 结构变化,自动添加对应的过渡动画: 增加子节点 > 渐入动画…

Redis(三):常见数据类型:List、Set、Zset

List 列表 列表类型是用来存储多个有序的字符串, 如图: a、b、c、d、e 五个元素从左到右组成 了⼀个有序的列表,列表中的每个字符串称为元素(element),⼀个列表最多可以存储个元素。在 Redis 中&#xff…

华为儿童手表,运动的引领者

作为家长,你是否经常为孩子的健康担忧,也一直在寻找一种可以与孩子一起运动、记录运动数据并让孩子产生对运动感兴趣的设备? 那不妨试试华为儿童手表,一款拥有专业的运动模式的智能手表。孩子只需简单操作手表,就能开…

自动化测试 —— Web自动化三大报错

Web自动化三大报错有哪些呢?接下来给大家讲讲。 Web自动化三大报错(Exception) 1. Exception1:no such element(没有在页面上找到这个元素) reason1:元素延迟加载了 solution: …

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

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

Docker部署Mysql5.7x和Myslq8.x

Docker部署Mysql5.7x和Myslq8.x 文章目录 1.部署mysql5.7.x2.部署mysql8.x3.创建用户授权及远程登录3.1 mysql5.7创建用户授权及远程登录3.2 mysql8创建用户授权及远程登录 4.总结 1.部署mysql5.7.x 在D盘下的mysql目录下新建如下目录: D:\mysql\conf\my.cnf内容如下…

centos7 docker Mysql8 搭建主从

Mysql8 搭建主从 docker的安装docker-compose的安装安装mysql配置主从在master配置在slave中配置在master中创建同步用户在slave中连接 测试连接测试配置测试数据同步遇到的问题id重复错误执行事务出错,跳过错误my.cnf 不删除多余配置的错误可能用到的命令 docker的…

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 断点 Break 命令篇】

文章目录 1. Break.Set1.1 TRACE32 Break1.1.1 Break命令控制CPU的暂停1.2 Break.Set 设置断点1.2.1 Trace32 程序断点1.2.2 读写断点1.2.2.1 变量被改写为特定值触发halt1.2.2.2 设定非值触发halt1.2.2.4 变量被特定函数改写触发halt1.2.3 使用C/C++语法设置断点条件1.2.4 使用…

苍穹外卖项目笔记(11)— 数据统计-图形报表

前言 代码链接: Echo0701/take-out⁤ (github.com) 1 Apache ECharts 基于 Javascript 的数据可视化图标库,提供直观生动可交互可个性定制的数据可视化图表 柱形图饼形图折线图 【核心】通过直观的图表来展示数据。使用 Echarts ,重点在…

算法——位运算

常见位运算总结 基础位运算 << >> ~与&&#xff1a;有0就是0或|&#xff1a;有1就是1异或^&#xff1a;相同为0&#xff0c;相异为1 / 无进位相加 给一个数n&#xff0c;确定他的二进制表示中的第x位是0还是1 让第x位与上1即可先让n右移x位&上一个1&#…

java反序列化数据过滤

前言&#xff1a; 反序列化漏洞的危害稍微了解一点的都知道&#xff0c;如果能找到前端某处存在反序列化漏洞&#xff0c;那基本上距离拿下服务器仅一步之遥&#xff0c;这个时候我们可以通过继承ObjectInputFilter添加tFilter实现对所有反序列化类的校验&#xff0c;当然这个需…

嵌入式行业是否会面临中年危机?

今日话题&#xff1a;嵌入式行业是否会面临中年危机&#xff1f;事实上&#xff0c;无论你在哪个行业工作&#xff0c;都可能面临下岗风险。因此&#xff0c;我的建议是选择一个有前景、发展空间大的行业和方向&#xff0c;并不断提升自己的技能价值。为了帮助你在嵌入式领域取…

perl处理json的序列化和反序列化

perl可以使用JSON模块很方便的处理json的序列化和反序列化。先来一段简单的例子&#xff1a; #! /usr/bin/perl use v5.14; use JSON; use IO::File;my $info {id > 1024,desc > hello world,arry > [1, 2, 3, 4, 5],obj > {char > [ A, B, C ]} };say to_jso…