SpringBoot入门及整合

前言

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

一.SpringBoot简介

1.简介

SpringBoot 基于 Spring 开发。SpringBoot 本身并不提供 Spring 框架的核心特性以及扩展功能,也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具

  关于 SpringBoot 有一句很出名的话就是约定大于配置。采用 Spring Boot 可以大大的简化开发模式,它集成了大量常用的第三方库配置,所有你想集成的常用框架,它都有对应的组件支持,例如 Redis、MongoDB、Jpa、kafka,Hakira 等等。SpringBoot 应用中这些第三方库几乎可以零配置开箱即用,大部分的 SpringBoot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。

2.特点

独立运行的 Spring 项目:Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令“ java–jar xx.jar” 即可运行。

内嵌 Servlet 容器:Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。

提供 starter 简化 Maven 配置:Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置。

提供了大量的自动配置:Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。

自带应用监控:Spring Boot 可以对正在运行的项目提供监控。

无代码生成和 xml 配置:Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置。

二.快速入门

1.SpringBoot创建 

idea左上角new--project新建项目

更改SpringBoot应用脚手架下载地址为阿里云

https://start.aliyun.com/

 点击下一步准备SpringBoot版本和相关依赖

 创建完成后会进行一个相应依赖和SpringBoot版本的下载

注意:因为会下载pom依赖,所以需要去配置相应的Maven仓库

2.SpringBoot目录介绍

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

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

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

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

注意点:我们的Java文件也就是main-java,运行文件必须与启动文件xxxApplication处于同级目录下,才能保证能够正常运行

3.文件配置

application.propertiesapplication.yml 都是用于配置Spring Boot应用程序的配置文件,它们之间的主要区别在于格式和书写风格。

3.1 格式

1.application.properties:使用简单的键值对(key=value)的格式

2.application.yml:使用更为结构化的 YAML(YAML Ain't Markup Language)格式

3.2 书写风格:

application.properties 相对简单,适合简单的键值对配置。

application.yml 具有更好的可读性和层次结构,适合较为复杂的配置,尤其是涉及到嵌套属性和列表的情况。

3.3 嵌套属性:

application.properties 在application.properties中,嵌套属性通常通过点(.)来表示,例如 spring.datasource.url

application.yml 在application.yml中,嵌套属性通过缩进来表示层次关系,例如上面的 spring.datasource.url

3.4列表属性:

application.properties 列表属性通常通过逗号分隔,例如 my.list.property=value1,value2,value3

application.yml 列表属性通过使用连字符(-)和缩进来表示

小结:总体来说,选择使用application.properties还是application.yml取决于你的个人偏好和项目需求。简单的键值对配置可以使用application.properties,而更为复杂的结构化配置则可以使用application.yml。在实际应用中,一般来说,两者都能满足大多数的配置需求。

 3.5 application.properties 转 application.yml

安装插件

右击application.properties配置文件

 

会自动为我们转换格式为yml键值对

4.启动项目

默认情况下,SpringBoot 项目会创建一个名为 ***Application 的主程序启动类,该类中使用了一个组合注解 @SpringBootApplication,用来开启 Spring Boot 的自动配置,另外该启动类中包含一个 main() 方法,用来启动该项目。

直接运行启动类 HelloworldApplication 中的 main() 方法,便可以启动该项目,结果如下图:

为了能比较的清楚的看到效果,我们在 com.zking.springboot01 包下又创建一个 controller 包,并在该包内创建一个名为 HelloController 的 Controller,代码如下:

@RestController
public class HelloController {@RequestMapping("/hello")public String hello(){return "Hello SpringBoot!!!";}
}

 注意:Spring Boot 内部集成了 Tomcat,不需要人为手动配置 Tomcat,开发者只需要关注具体的业务逻辑即可。

重启 SpringBoot 项目,然后在地址栏访问 “http://localhost:8080/hello”  

三. SpringBoot整合

1.整合JDBC

1.导入相关依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.44</version>
</dependency>

2.在application.yml中添加数据源配置

spring:# 数据源配置datasource:url: jdbc:mysql://localhost:3306/bookshopusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver

2.整合Mybatis

1.添加相关依赖

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version>
</dependency>

2.在application.yml中添加Mybatis配置

# 配置Mybatis
mybatis:# Mapper.xml所在位置mapper-locations: classpath*:mapper/*.xml# 配置别名扫描实体类所在的包type-aliases-package: com.yu.boot.pojo

3.启动类上添加@MapperScan注解:

@MapperScan("com.yu.boot.mapper")
public class BootApplication {public static void main(String[] args) {SpringApplication.run(BootApplication.class, args);}}

3.整合PageHelper

1.导入依赖

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.3.0</version>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2.修改application.yml配置文件

#pagehelper分页插件配置
pagehelper:helperDialect: mysqlreasonable: truesupportMethodsArguments: trueparams: count=countSql

4.整合Druid数据库连接池

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

1.导入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.16</version>
</dependency>

2.修改application.yml配置文件 

spring:datasource:#1.JDBCtype: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/vue?useUnicode=true&characterEncoding=utf8&useSSL=falseusername: rootpassword: 1234druid:#2.连接池配置#初始化连接池的连接数量 大小,最小,最大initial-size: 5min-idle: 5max-active: 20#配置获取连接等待超时的时间max-wait: 60000#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒time-between-eviction-runs-millis: 60000# 配置一个连接在池中最小生存的时间,单位是毫秒min-evictable-idle-time-millis: 30000validation-query: SELECT 1 FROM DUALtest-while-idle: truetest-on-borrow: truetest-on-return: false# 是否缓存preparedStatement,也就是PSCache  官方建议MySQL下建议关闭   个人建议如果想用SQL防火墙 建议打开pool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filter:stat:merge-sql: trueslow-sql-millis: 5000#3.基础监控配置web-stat-filter:enabled: trueurl-pattern: /*#设置不统计哪些URLexclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"session-stat-enable: truesession-stat-max-count: 100stat-view-servlet:enabled: trueurl-pattern: /druid/*reset-enable: true#设置监控页面的登录名和密码login-username: adminlogin-password: adminallow: 127.0.0.1#deny: 192.168.1.100

5.整合Log日志

1.修改application.yml配置文件 

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

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

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

相关文章

IntelliJ IDEA创建一个spark的项目

在开始之前&#xff0c;需要说明的是 要跑通基本的wordcount程序&#xff0c;是不需要在windows上安装 hadoop 和spark的&#xff0c;因为idea在跑程序的时候&#xff0c;会按照 pom.xml配置文件&#xff0c;从指定的 repository源&#xff0c;按照properties指定的版本&#x…

系统架构设计师教程(一)绪论

系统架构设计师 1.1 系统架构概述1.1.1 系统架构的定义及发展历程1.1.2 软件架构的常用分类及建模方法1、软件架构常用分类2、系统架构的常用建模方法 1.2 系统架构设计师概述1.3 如何成为一名好的系统架构设计师 1.1 系统架构概述 自1946年第一台计算机诞生以来&#xff0c;计…

LVDS硬件设计

LVDS接口有: 1、四对信号传输差分线&#xff0c;最多传输 4*728bit数据 2、一对时钟。 3、一对差分线有8位&#xff0c;但是最多传输7 bit 的数据。 4、一个LVDS通道只能传输8bit的RGB信号&#xff08;3*8 3 27bit&#xff09;。高于8Bits 就需要两个channel。 5、LVDS的时钟一…

springboot(ssm云上水果超市 水果销售系统Java系统

springboot(ssm云上水果超市 水果销售系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09; 数据库…

CSS import 规则

导入 “navigation.css” 样式到当前的样式表&#xff1a; import “navigation.css”; /* 使用字符串 / 或者 import url(“navigation.css”); / 使用 url 地址 */ 属性定义及使用说明 CSS import 用于从其他样式表导入样式规则。 import 规则必须在 CSS 文档的头部&#xff…

react-native 最新版 删除x86配置

针对不同的 CPU 架构生成 APK 以减小 APK 文件的大小 默认情况下&#xff0c;生成的 APK 会同时包含针对于多种 CPU 架构的原生代码。这样可以让我们更方便的向其他人分享这个 APK&#xff0c;因为它几乎可以运行在所有的 Android 设备上。但是&#xff0c;这会导致所有设备上都…

IntelliJ插件开发-Code Vision Hints

简介 Code Vision Hints是idea Inlay提示中的一种类型&#xff0c;它只能提供block类型的inlay&#xff0c;可以把它添加到字段、方法、类等上面&#xff0c;一个元素如果包含多个提示的话&#xff0c;这些inlay会被展示在同一行上。 Code vision hints可以展示在元素的上面、…

怎么用qq邮箱发送大视频文件?一分钟解决!

QQ邮箱发送文件时&#xff0c;单个文件的大小不能超过32MB。但是&#xff0c;如果用户发送的邮件包含多个附件&#xff0c;则所有附件的总大小不能超过2GB。所以&#xff0c;下面就向大家介绍这两种不同的文件大小情况如何发送&#xff0c;下面是三种方法具体的操作。 方法一&…

国产服务器网卡和进口芯片服务器网卡性能测试

服务器网卡的主要功能是管理和处理网络流量&#xff0c;要求数据传输稳定、可靠&#xff0c;性能卓越。受前两年缺芯浪潮影响&#xff0c;国产芯片急流勇进&#xff0c;不断取得新突破和新进展&#xff0c;成为工业以太网控制器领域冉冉升起的新星&#xff0c;为用户提供更多选…

极智芯 | 解读英伟达新一轮特供GPU RTX 4090D

欢迎关注我的公众号「极智视界」,获取我的更多经验分享 大家好,我是极智视界,本文分享一下 解读英伟达新一轮特供GPU RTX 4090D。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 除了上次我解读的《深…

Spark SQL 的partitionBy() 动态分区

在Spark SQL中&#xff0c;partitionBy() 动态分区是指根据数据的实际值进行分区&#xff0c;而不是在数据写入时就确定分区的值。动态分区可以通过 partitionBy 方法的参数来指定。 partitionBy()函数的使用方法如下&#xff1a; df.write.partitionBy("column1", &…

开源软件基础

1&#xff0c;常见开源协议 &#xff08;1&#xff09;BSD&#xff08;Apache、MIT&#xff09;无传染 &#xff08;2&#xff09;MPL&#xff08;EPC&#xff09;修改则开源 &#xff08;3&#xff09;LGPL&#xff0c;静态链接开源&#xff0c;动态链接不开源 &#xff0…

LeetCode-654. 最大二叉树【栈 树 数组 分治 二叉树 单调栈】

LeetCode-654. 最大二叉树【栈 树 数组 分治 二叉树 单调栈】 题目描述&#xff1a;解题思路一&#xff1a;递归&#xff0c;这个问题的难点在于如何找到每个子数组的最大值。此处用的是暴力查找最大值&#xff0c;然后递归构建左右子树。解题思路二&#xff1a;单调栈&#xf…

LinuxC中进程通信

LinuxC中进程通信 信号&#xff08;Signals&#xff09;&#xff1a;Linux 提供了信号机制&#xff0c;允许一个进程向另一个进程发送信号以通知特定事件的发生。这是一种轻量级的通信机制&#xff0c;通常用于处理异步事件。您可以使用 kill 命令或 kill 函数来发送信号&…

DAP数据集成与算法模型如何结合使用

企业信息化建设会越来越完善&#xff0c;越来越体系化&#xff0c;当今数据时代背景下更加强调、重视数据的价值&#xff0c;以数据说话&#xff0c;通过数据为企业提升渠道转化率、改善企业产品、实现精准运营&#xff0c;为企业打造自助模式的数据分析成果&#xff0c;以数据…

比Flex更强大的Grid网格布局

比Flex更强大的Grid网格布局 什么是 Grid 布局浏览器兼容性Flex 兼容性更好Grid 看需求选择 基本概念容器属性grid-template-columns 划分列grid-gap / grid-column-gap 间距justify-items(水平方向) / align-items(垂直方向) 单元格内容的对齐方式justify-content(水平方向) /…

ansible中的角色

1.理解roles在企业中的定位及写法 查看创建目录结构 ansible - galaxy list 指定新的位置 vim ansible.cfg roles_path ~/.ansible/roles 建立项目 cd roles/ ansible-galaxy init vsftpd tree vsftpd/ 编辑任务执行&#xff08;顺序&#xff09;文件 vim vsftpd/tas…

【LeeCode】55. 右旋字符串

题目描述 字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k&#xff0c;请编写一个函数&#xff0c;将字符串中的后面 k 个字符移到字符串的前面&#xff0c;实现字符串的右旋转操作。 例如&#xff0c;对于输入字符串 &qu…

事业编《综应 综合知识应用能力 综合应用》笔记

文章目录&#xff1a; 一&#xff1a;归纳概况题 二&#xff1a;对策措施题 三&#xff1a;综合分析题 四&#xff1a;公文写作题 五&#xff1a;事务处理题 六&#xff1a;案例分析题 1.问题类 2.原因类 3.影响类 4.场景方案类 七&#xff1a;材料作文题 八&#…

做数据分析为何要学统计学(9)——什么是回归分析

​回归分析&#xff08;regression analysis)是量化两种或两种以上因素/变量间相互依赖关系的统计分析方法。回归分析根据因素的数量&#xff0c;分为一元回归和多元回归分析&#xff1b;按因素之间依赖关系的复杂程度&#xff0c;可分为线性回归分析和非线性回归分析。我们通过…