SpringBoot的基础介绍,用法和配置

为什么会推出一款全新的SpringBoot?

虽然Spring已经取得了非常大的成功,他的优点非常的多,将创建方法的权利给了Spring架构使我们程序员写代码更加的便利。

但是Spring也有很多的缺点:

  • 配置麻烦,而且很多都是模板化的配置
  • 需要依赖很多的jar 例如web层依赖jackson组件,需要我们自己加入依赖. 版本也有可能不匹配,一旦我们加入错误的jar包或者版本不匹配的话就会报错

所以,基于以上缺点,SpringBoot横空出世,它的出现不是为了取代Spring,而是为了解决Spring的问题,是为了简化Spring的搭建。

Spring Boot 以约定大于配置的核心思想,从而使开发人员不再需要定义样 板化的配置。它集成了大量常用的第三方库配置。(例如 Redis,RocketMQ,Quartz 等等),Spring Boot 应用中第三方库几乎可以零配置的开箱即用,通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域成为领导 者。

所谓约定大于配置就是在开发人员圈子中大家公认要做的事情,比如我们要手动开启Spring事务管理,但是这是一个项目必须要做的,所以SpringBoot就帮我们完成了

SpringBoot 开发环境构建

创建一个普通的 maven 项目
在 pom.xml 文件中添加以下配置
<!--依赖的父级工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.6</version>
<relativePath/>
</parent>
<!--指定 jdk 版本-->
<properties>
<java.version>1.8</java.version>
</properties>
<!--添加基本的 springweb 依赖-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!--打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.6</version>
</plugin>
</plugins>
</build>
创建基本包目录,在包下创建一个启动类,如下所示:
@SpringBootApplication
public class NewsApplication {
public static void main(String[] args) {
SpringApplication.run(NewsApplication.class);
}
}

SpringBoot内部集成了一个maven服务器,我们只需要启动启动类就可以,一个SpringBoot应用就是一个独立的服务。
Spring Boot 配置文件
Spring Boot 使 用 一 个 全 局 的 配 置 文 件 ( 配 置 文 件 名 是 固 定 的 , 必 须 为
application),用来存储项目中需要用到的各种配置参数.
配置文件格式有两种,一种为 properties 格式,一种 yaml 格式.
application.properties 属性文件格式,内容为键值对
server.port=8080
properties 格式比较简单,没有什么难度,在此我们以第二种 yaml 格式为例
可以看到yaml中的格式有严格的分级意识,最大的一级定格写,他的字节则往后空两个以此类推
以及我们在给配置赋值的时候必须空一格

SpringBoot 数据访问管理

首先为了链接数据库我们需要导入jdbc的jar包:

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

还有mysql的驱动:

        <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency>
在 application.yml 中配置数据源信息

spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver

SpringBoot 整合阿里数据源

导入阿里数据源 jar
        <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency>
在 yml 文件中注册阿里数据库连接池
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 5 初始化时建立物理连接的个数
maxActive: 20 最大连接池数量
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/newsdb?serverTimezone=Asia/Shanghaiusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceinitialSize: 5 #初始化时建立物理连接的个数maxActive: 20 #最大连接池数量main:allow-circular-references: true #开始支持spring循环依赖redis:host: 127.0.0.1port: 6379password:database: 0pool:max-active: 8 # 连接池最大连接数(使用负值表示没有限制)max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)max-idle: 8 # 连接池中的最大空闲连接min-idle: 0 # 连接池中的最小空闲连接timeout: 5000ms # 连接超时时间(毫秒)

SpringBoot 集成 mybatis

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

在 application.yml 中配置数据源信息:
mybatis:
type-aliases-package: com.ff.cms.bean
mapper-locations: classpath:mapper/*Mapper.xml
configuration:
map-underscore-to-camel-case: true
cache-enabled: true
启动类上添加@MapperScan("接口所在的包地址")@MapperScan("接口所在
的包地址")

SpringBoot 统一异常处理

我们在代码的过程中,难免会出现有的程序会抛出异常,我们一般都是用try chatch的方式捕获或者直接throw抛出不管。不管是那种方式都太过的繁琐和麻烦,而解决这一问题,统一的异常处理就是一个不错的选择。

Springboot 对 于 异 常 的 处 理 也 做 了 不 错 的 支 持 , 它 提 供 了 一
个 @RestControllerAdvice 注解以及 @ExceptionHandler 注解,前者是用来
开启全局的异常捕获,后者则是说明捕获哪些异常,对那些异常进行处理。
@RestControllerAdvice
public class GlobalExceptionHandler {
/**
* 异常处理
*/
@ExceptionHandler(Exception.class)
public CommonResult globalException(Exception e) {
CommonResult commonResult = new CommonResult(500,e.getMessage());
return commonResult;
}
}

SpringBoot 定时任务

在项目中经常会有一些功能需要在特定的时间完成特定的操作,这时就需要用到定时器。

开启定时器有两种办法:

  1. 使用 java 自带的 TimerTask,Timer

我们需要创建一个TimerTask对象,重写里面的run方法。

创建一个Timer计时器对象,调用里面的schedule方法来启动定时任务,

public static void main(String[] args) {
// 定义一个任务
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("打印当前时间:" + new Date());
}
};
// 计时器
Timer timer = new Timer();
// 开始执行任务 (延迟 1000 毫秒执行,每 3000 毫秒执行一次)
timer.schedule(timerTask, 1000, 3000);
}

     2.使用SpringBoot中提供的定时任务

在 SpringBoot 的启动类上声明 @EnableScheduling
@Component
public class TestTask {
@Scheduled(cron = "*/6 * * * * ?")
private void process() {
System.out.println("现在时间:" + new Date());
}
}

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

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

相关文章

深度学习】--卷积神经网络

​​​​​​ 卷积神经网络 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称CNN&#xff09;是一种深度学习模型&#xff0c;特别适用于处理具有网格结构的数据。主要目的是自动地、层次化地从原始数据中学习有效的特征表示&#xff0c;以完成特定的任…

RK3588部署YOLOv8姿态估计

1. YOLOv8姿态估计与部署 姿态估计(Pose estimation)是一项涉及识别图像中关键点位置的任务。 关键点可以表示对象的各个部分&#xff0c;如关节、地标或其他独特特征,关键点的位置通常表示为一组2D[x, y]或3D[x, y, visible]坐标。 YOLOv8-Pose人体姿态估计,会先检测出图像中…

信创之-麒麟v10服务器安装tengine(已完成)

之前的文章太长了&#xff0c;所以单独写背景&#xff1a;java8springbootnginxredissqlserverwindows server2000目前java8已经更换&#xff0c;windows也已经更换&#xff0c;sqlserver也已经更换成dm8其实java的静态文件目录&#xff0c;可以很好处理前端网站了&#xff0c;…

Redis进阶(上)

Redis系统架构中各个处理模块是干什么的&#xff1f; Redis 系统架构 本课时&#xff0c;我将进一步分析 Redis 的系统架构&#xff0c;重点讲解 Redis 系统架构的事件处理机制、数据管理、功能扩展、系统扩展等内容。 事件处理机制 Redis 组件的系统架构如图所示&#xff0c;主…

【K8s】整体认识K8s之监控与升级/ETCD的备份和恢复/kustomization/CRD

metrics-server 先说一下metrics-server&#xff0c;这是一个聚合器&#xff0c;专门用来显示集群的资源使用情况&#xff0c;主要是内存和cpu。 安装 metrics-server kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.0/comp…

【数据分享】多份土地利用矢量shp数据分享-澳门

而今天要说明数据就是多份土地利用矢量shp数据分享-澳门。数据介绍▲ 土地利用数据&#xff08;2025年&#xff09;▲土地利用数据&#xff08;2018年&#xff09;▲ 30m土地利用数据&#xff08;2023年&#xff09;▲ 公路铁路道路河流水系数据概况其他概况注&#xff1a;本文…

增强现实—Gated-attention architectures for task-oriented language grounding

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

CC攻击的技术分析与防御策略

CC攻击&#xff08;Challenge Collapsar Attack&#xff09;是一种针对Web应用的拒绝服务攻击方式&#xff0c;其主要通过模拟正常用户行为来消耗服务器资源。为了更好地理解这种攻击&#xff0c;让我们详细分析其技术原理及防御策略。CC攻击的技术原理CC攻击主要是通过发送大量…

【图论】分层图

一、分层图的核心思想 分层图是一种将图的不同状态拆分为多个“层”的建模方法&#xff0c;每层对应一种特定状态。通过这种方式&#xff0c;可以将复杂的状态转移问题转化为多层图中的最短路径问题。 核心特点&#xff1a; 层内边&#xff1a;表示普通操作&#xff08;如正常行…

当稳定币开始生息:USDT0 与 Berachain 的二次进化故事

如果说过去几年&#xff0c;稳定币是 DeFi 世界里最安稳的一块基石&#xff0c;那么 2025 年的 Berachain 正在把它们重新塑造成一种新的资产类型。在这条新兴的公链上&#xff0c;稳定币不再只是 “资金的搬运工”&#xff0c;而是摇身一变&#xff0c;成为能生息、能博弈、能…

Kafka、RabbitMQ 与 RocketMQ 在高并发场景下的高可用与性能对比分析

Kafka、RabbitMQ 与 RocketMQ 在高并发场景下的高可用与性能对比分析 消息队列作为分布式系统中常见的异步解耦组件&#xff0c;在高并发场景下对可用性和性能提出了极高的要求。本文基于生产环境需求&#xff0c;深入分析 Kafka、RabbitMQ 与 RocketMQ 三大主流消息中间件在高…

深入理解 HTTP 与 HTTPS:区别以及 HTTPS 加密原理

目录 一、HTTP 与 HTTPS 的基本概念 二、HTTP 与 HTTPS 的核心区别 三、为什么需要 HTTPS&#xff1f; 四、HTTPS 的加密通信原理&#xff08;核心&#xff09; 1. 客户端发起 HTTPS 请求 2. 服务端返回 SSL/TLS 证书 3. 客户端验证证书 4. 客户端生成对称密钥并用公钥…

零售行业的 AI 革命:从用户画像到智能供应链,如何让 “精准营销” 不再是口号?

AI 浪潮下的零售变革​在科技飞速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的态势席卷全球&#xff0c;深刻地改变着各行各业的运营模式和发展轨迹&#xff0c;零售行业自然也难以置身事外。AI 技术凭借其强大的数据处理能力、精准的分析预测能力…

PyTorch 面试题及详细答案120题(96-105)-- 性能优化与调试

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。 前后端面试题-专栏总目录 文章目录 一、本文面试题目录 96. 如何查看PyTorch模型的…

Linux 孤儿进程 (Orphan Process)

&#x1f381;个人主页&#xff1a;工藤新一 &#x1f50d;系列专栏&#xff1a;C面向对象&#xff08;类和对象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;终会照亮我前方的路 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录孤…

Linux Tun/Tap 多队列技术

&#x1f525; Linux Tun/Tap 多队列技术 引用&#xff1a;Linux tun/tap 驱动多队列模式&#xff08;C/C&#xff09; &#x1f4d6; 引言 Tun/Tap 是 Linux 内核提供的虚拟网络设备&#xff0c;广泛应用于 VPN、虚拟化、网络隧道等领域。传统单队列模式在高吞吐量场景下存…

docker 启动一个clickhouse , docker 创建ck数据库

1. 拉镜像&#xff1a;docker pull clickhouse/clickhouse-server2. 创建容器并且启动命令&#xff1a;docker run -d --name clickhouse-server \-p 8123:8123 -p 9000:9000 \clickhouse/clickhouse-server3. 日志文件的映射&#xff0c;可以自己配置下&#xff0c;目前创建的…

合约服务架构-OOP 方式

文章目录前言&#x1f3af; 经典的面向对象编程&#xff01;1. &#x1f3d7;️ **封装 (Encapsulation)**2. &#x1f9ec; **继承 (Inheritance)**3. &#x1f3ad; **多态 (Polymorphism)**4. &#x1f3a8; **抽象 (Abstraction)**&#x1f3db;️ 设计模式的应用1. **工厂…

C# 生成器模式(一个投资跟踪程序)

一个投资跟踪程序 我们考虑一个稍微简单一点的例子&#xff0c;在这个例子中&#xff0c;用一个类构造一个用户界面。假设我 们要编写一个程序来跟踪投资的效益。我们有股票、债券和基金等投资项目&#xff0c;对每一种投资项 目都要显示持有量的列表&#xff0c;这样就能够选择…

【DBCExcelConvent】CAN报文解析辅助工具之DBC与Excel互转

前言 CAN总线翻译文件DBC是整车解析过程中非常核心的一部分&#xff0c;因此为了能被各大CAN工具解析&#xff0c;它也有自己的一套编码规则。但并不是无时无刻都有条件打开该文件&#xff0c;对于工程师而言。其实比较直观和通用的大多数还是Excel表格。因此&#xff0c;为了打…