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
英文地址,請注明出處:http://en.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;為了打…