java微服務(Springboot篇)——————IDEA搭建第一個Springboot入門項目

在正文開始之前我們先來解決一些概念性的問題

🍕🍕🍕 問題1:Spring,Spring MVC,Spring Boot和Spring Cloud之間的區別與聯系?

🍬🍬🍬(1)Spring框架
Spring框架是一個開源的Java企業級應用開發框架,它的核心思想是通過**依賴注入(DI)面向切面編程(AOP)**來降低組件間的耦合性,增強代碼的可維護性和可測試性。

核心內容:
💙IoC容器(控制反轉):用于管理應用中的對象及其生命周期,提供依賴注入(DI)功能。
💙AOP模塊(面向切面編程):提供聲明式事務管理、日志記錄等功能。
💙數據訪問:簡化了JDBC的使用,提供對ORM框架(如Hibernate)的支持。
💙事務管理:支持聲明式和編程式的事務管理。
💙消息服務:提供JMS(Java Message Service)支持。
💙Web框架:為Web應用提供靈活的支持。

🍬🍬🍬(2)Spring MVC
Spring MVC是Spring框架中的一個Web模塊,它實現了MVC(Model-View-Controller)設計模式。Spring MVC提供了一個靈活的方式來處理Web請求,解耦了請求的處理與業務邏輯。

核心組件:

💙DispatcherServlet:中央調度器,接收所有的HTTP請求并將其轉發給相應的處理器(Controller)。
💙Controller:處理請求并返回相應的模型數據。
💙ModelAndView:封裝了模型數據和視圖信息,用于將模型數據傳遞到視圖層。
💙View Resolver:根據返回的視圖名解析實際的視圖資源。

🍬🍬🍬(3)Spring Boot
Spring Boot是基于Spring的一個開源框架,旨在簡化Spring應用的開發過程。它通過約定優于配置(Convention over Configuration)的方式,減少了開發者的配置工作,并提供了一些開箱即用的功能。

Spring Boot的特點:
💙簡化配置:通過application.properties或者application.yml進行配置,避免了繁瑣的XML配置。
💙嵌入式容器:內置Web容器(如Tomcat、Jetty、Undertow),開發者無需部署WAR包,可以直接啟動應用。
💙自動配置:自動配置Spring和第三方庫(如數據庫連接池、JPA等),使得開發者專注于業務邏輯。
💙生產級功能:Spring Boot集成了諸如Actuator(監控)、Metrics(性能指標)等功能,方便開發者進行應用運維。

🍬🍬🍬(4)Spring Cloud
Spring Cloud是構建分布式系統的開發工具集,它提供了許多用于構建微服務架構的功能。Spring Cloud構建在Spring Boot之上,結合了很多用于分布式系統開發的常見模式和解決方案。

主要模塊:
💙Spring Cloud Netflix:提供了服務發現(Eureka)、負載均衡(Ribbon)、斷路器(Hystrix)等功能。
💙Spring Cloud Config:集中配置管理。
💙Spring Cloud Gateway:API網關,用于路由請求到微服務。
💙Spring Cloud Stream:分布式消息傳遞。
💙Spring Cloud Security:安全認證和授權。
💙Spring Cloud Sleuth:分布式追蹤。

特點:
💙服務注冊與發現:通過Eureka實現服務的自動注冊和發現,支持負載均衡。
💙斷路器模式:通過Hystrix提供的斷路器模式,保證服務的高可用性。
💙API網關:Spring Cloud Gateway作為API網關,提供路由、負載均衡、權限控制等功能。
配置管理:通過Spring Cloud Config實現集中化配置管理。
💙分布式追蹤:支持分布式追蹤,幫助開發者了解系統內部的調用鏈路。

🍬🍬🍬(5)聯系
💙Spring和Spring MVC關系
Spring MVC是Spring框架的一個模塊,負責Web層的開發。它是Spring框架的一部分,利用Spring的核心功能(如IoC、AOP等),為Web應用提供全面的支持。
💙Spring Boot與Spring的關系
Spring Boot基于Spring框架,但它的目標是簡化Spring應用的創建和部署。它通過自動化配置和嵌入式服務器,讓開發者能夠更加高效地開發和部署應用。

💙Spring Cloud與Spring Boot的關系
Spring Cloud構建在Spring Boot之上,利用Spring Boot的特性簡化了分布式系統的開發。Spring Cloud為微服務架構提供了常用的基礎設施組件,而Spring Boot則負責提供應用的快速開發和自動配置。

可以理解為SpringMVC是Spring框架的子模塊,SpringBoot是Spring的擴展版本,SpringCloud又是SpringBoot的擴展,用于微服務架構

🍕🍕🍕問題2:什么是面向切面編程(AOP)

面向切面編程(AOP)通過將橫切關注點(cross-cutting concerns)分離出來,提供了一種增強代碼模塊化和可維護性的方法。

簡單來說,AOP就是將公共的模塊封裝成公共的方法,然后在需要的時候(這個就是切入點),直接就可以調用,而不用在各個對象里面具體的實現。

AOP是一種新的編程方式,它和OOP不同,OOP把系統看作多個對象的交互,AOP把系統分解為不同的關注點,或者稱之為切面(Aspect)。這個可以理解為把系統理解為一個流程,一個對象負責流程上的一個節點。

當然,要徹底理解AOP需要大量的實踐才能理解

🍕🍕🍕問題3:什么是微服務?

💙微服務(Microservices)是一種軟件架構設計模式,它將應用程序分解為小型、自治的服務單元,這些服務單元可以獨立部署、擴展和維護,其中每一個服務單元也都是一個微服務。與分布式操作系統類似

基于微服務形成的軟件架構風格稱為微服務架構(Microservices Architecture),它涵蓋了使用微服務構建應用程序的全套原則、模式和最佳實踐,關注如何將應用程序分解為多個微服務,以及這些服務如何交互、如何維護服務之間的獨立性、如何實現服務的持續交付和部署等。在日常使用中,微服務又常被稱為微服務架構,兩者不區分使用。

說明白概念之后我們進入本文的正題————用IDEA搭建第一個Springboot入門項目

??第一步:新建項目
依次點擊File——New——Project
在這里插入圖片描述
??第二步:在彈出的框中勾選配置**
注意:
(1)Name可以自己指定,指定完成后Artifat也會跟著變化
(2)Package name等于Group和Artifact連接起來的名稱
(3)Group 和Artifact都可以自己指定
(4)Type要選擇MAVEN不要選GRADLE
(5)JDK要選擇電腦上已經安裝的JDK版本,Springboot2搭載的是JDK8,目前企業級開發支持的是JDK21,我這里使用的是JDK17
(6)打包方式選擇JAR方式打包
(7)左側欄選擇Spring Initializr
(8)全部勾選完點擊next
在這里插入圖片描述

??第三步:勾選依賴項
注意:
(1)Web下拉框選擇Spring web,選擇完成后右邊框中就會出現對應的名稱
(2)Springboot選擇穩定的版本,我這里是3.5.3,不要選擇快照版(版本號跟SNAPSHOT的),快照版不穩定
在這里插入圖片描述

??第四步:點擊Create創建成功
注意聯網狀態下才能創建成功

??第五步:創建控制器類包和控制器類(在main文件夾下)
在這里插入圖片描述

??第六步:在controller包下的BookController類中寫代碼
在這里插入圖片描述

package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/books")
public class BookController {@GetMappingpublic String getById(){System.out.println("springboot is running...");return "springboot is running";}
}

這段代碼的運行效果是在瀏覽器頁面上輸出springboot is running

??第七步:找見下圖中的DemoApplication右鍵選擇run
注意:
(1)Application是系統自動生成的我們不需要創建
(2)Springboot項目的啟動依賴下圖中的Application和ApplicationTests
在這里插入圖片描述
在這里插入圖片描述

??第八步:啟動Springboot項目,如下圖所示
啟動后可以看到Tomcat端口號和8080和訪問路徑“\”在這里插入圖片描述

??第九步:通過我們代碼中的路徑查看程序運行效果
@RequestMapping(“/books”)這行代碼給出了一級路徑books,我們在瀏覽器中輸入http://localhost:8080/books就可以出現下圖效果

在這里插入圖片描述

??第十步:返回瀏覽器查看控制臺信息發現控制臺輸出了springboot is running的信息
在這里插入圖片描述

至此我們第一個Springboot項目完成

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913238.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913238.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913238.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

服務器間接口安全問題的全面分析

一、服務器接口安全核心威脅 文章目錄**一、服務器接口安全核心威脅**![在這里插入圖片描述](https://i-blog.csdnimg.cn/direct/6f54698b9a22439892f0c213bc0fd1f4.png)**二、六大安全方案深度對比****1. IP白名單機制****2. 雙向TLS認證(mTLS)****3. JWT簽名認證****4. OAuth…

vs code關閉函數形參提示

問題:函數內出現灰色的形參提示 需求/矛盾: 這個提示對老牛來說可能是一種干擾,比如不好對齊控制一行代碼的長度,或者容易看走眼,造成眼花繚亂的體驗。 關閉方法: 進入設置,輸入inlay Hints&…

ESXi 8.0安裝

使用群暉,突然nvme固態壞了 新nvme固態,先在PC上格式化下,不然可能N100可能不認 啟動,等待很長時間 回車 F11 輸入密碼,字母小寫字母大寫數字 拔掉U盤,回車重啟 網絡配置 按F2, 輸入密碼&…

【git學習】第2課:查看歷史與版本回退

好的,我們進入 第2課:版本查看與回退機制,本課你將學會如何查看提交歷史、對比更改,并掌握多種回退版本的方法。📘 第2課:查看歷史與版本回退🎯 本課目標熟練查看 Git 提交記錄掌握差異查看、版…

攝像頭AI智能識別工程車技術及應用前景展望

攝像頭AI自動識別工程車是智能交通系統和工程安全管理領域的一項重要技術。它通過圖像識別技術和深度學習算法,實現對工程車的自動檢測和識別,從而提高了施工現場的安全性和管理效率。以下是對該技術及其應用的詳細介紹:一、技術實現數據收集…

Windows服務器安全配置:組策略與權限管理最佳實踐

Windows服務器是企業常用的服務器操作系統,但其開放性和復雜性也使其成為攻擊者的目標。通過正確配置組策略和權限管理,可以有效提高安全性,防止未經授權的訪問和惡意軟件的入侵。以下是詳細的安全配置指南和最佳實踐。 1. 為什么組策略和權限…

Windows部署Rocketmq問題匯總

最近研究了下Rocketmq消息中間件,在Win10上部署時遇到一些問題,做個記錄 部署的是Rocketmq 4.92版本,對應使用的控制臺用的1.0版本 下載地址 1.優化內存占用 修改 runserver.cmd 修改前 set "JAVA_OPT%JAVA_OPT% -server -Xms2g -Xmx…

動手學深度學習-學習筆記(總)

文章目錄 1、概述2、內容2.1、python2.2、動手學深度學習2.2.1、課前準備2.2.2、預備知識2.2.3、線性神經網絡 2.3、深度學習重要概念 3、常見問題3.1、安裝 d2l 失敗3.2、調用 mean() 方法報錯3.3、markdown 常見公式3.4、執行動手學深度學習中的代碼,無法顯示圖片…

springboot3.5 MySQL 自動裝配解析

一、配置環境 1. 配置pom.xml <dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency> 2、自動配置圖解 二、相關代碼解析 1、自動配置入口&#xff1a…

使用 Conda 工具鏈創建 Poetry 本地虛擬環境全記錄——基于《Python 多版本與開發環境治理架構設計》

Python 多版本治理理念&#xff08;Windows 平臺 零基礎友好&#xff09;-CSDN博客 Python 多版本與開發環境治理架構設計-CSDN博客 使用命令行創建項目本地的 Poetry 虛擬環境實戰演示 —— 基于《Python 多版本與開發環境治理架構設計》的最佳實踐-CSDN博客 一、Python311 環…

北小菜, python , onvif

第一節&#xff1a; 首先是環境的搭建。 環境的搭建。 roottopeet:/home/topeet/source_code/wang_onvif_python# python -m venv venv Command python not found, did you mean:command python3 from deb python3command python from deb python-is-python3 roottopeet:/ho…

TinyWebserver學習(9)-HTTP

一、相關知識 1、有限狀態機&#xff1a; 有限狀態機&#xff08;Finite State Machine, FSM&#xff09;是一種用于描述對象在其生命周期內可能經歷的不同狀態及其狀態轉換規則的模型。它廣泛應用于游戲開發、網絡協議、詞法解析、UI邏輯控制等領域。以下是C中有限狀態機的簡…

2025最新軟件測試面試八股文

&#x1f345; 點擊文末小卡片&#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 Part1 1、你的測試職業發展是什么&#xff1f; 測試經驗越多&#xff0c;測試能力越高。所以我的職業發展是需要時間積累的&#xff0c;一步步向著高級測試工程師…

React 強大的表單驗證庫formik之集成Yup、React Hook Form庫

簡介 Formik 是為 React 開發的開源表單庫&#xff0c;提供狀態管理、驗證和提交處理功能&#xff0c;可簡化復雜表單的開發。 核心優勢 ?- 狀態管理 ?&#xff1a;自動跟蹤輸入值、驗證狀態和提交進度&#xff0c;無需手動編寫狀態邏輯。 ? ?- 驗證功能 ?&#xff1a;…

破解風電運維“百模大戰”困局,機械版ChatGPT誕生?

面對風機87%的非計劃停機&#xff0c;30多個專用模型為何束手無策&#xff1f;一套通用大模型如何實現軸承、齒輪、轉子“一站式”健康管理&#xff1f;一、行業痛點&#xff1a;風機運維深陷“碎片化泥潭”1.1 87%停機故障由多部件引發齒輪斷裂、軸承磨損、電機短路……風電故…

Spring Bean 控制銷毀順序的方法總結

控制Spring Bean銷毀順序的方法 在Spring框架中&#xff0c;有幾種方法可以控制Bean的銷毀順序。以下是主要的幾種方式及其示例代碼&#xff1a; 1. 實現DisposableBean接口 實現DisposableBean接口并重寫destroy()方法&#xff0c;Spring會按照依賴關系的相反順序調用這些方…

Gemini CLI MCP 教程:設置、命令與實際使用

如果你想要為任何 MCP 服務器設置 Gemini CLI,這個快速教程將為你提供指導。 Gemini CLI 結合 MCP(模型上下文協議)服務器,改變了你通過自然語言命令進行編碼的方式。 你可以要求 Gemini 分析你的代碼庫、管理文件、查詢數據庫,或通過對話提示與 API 交互。 MCP 服務器連…

LangChain 構建向量數據庫和檢索器

LangChain 構建向量數據庫和檢索器實戰 隨著大語言模型&#xff08;LLM&#xff09;在各類 AI 應用中不斷普及&#xff0c;RAG&#xff08;Retrieval-Augmented Generation&#xff0c;檢索增強生成&#xff09;逐漸成為提升回答準確率與上下文關聯性的重要技術路徑。 一、什…

基于 LangChain 實現通義千問 + Tavily 搜索 Agent 的簡單實踐

文章目錄 一、相關背景1.1 LangChain 簡介1.2 通義千問&#xff08;Tongyi Qianwen&#xff09;1.3 Tavily 實時搜索引擎1.4 架構總覽 二、環境配置設置 API 密鑰 三、 Tavily 搜索四、智能 Agent 示例&#xff1a;自動判斷是否調用 Tavily4.1 初始化 Agent4.2 提問兩個問題&am…

SegGPT: 在上下文中分割一切

摘要 我們提出了 SegGPT&#xff0c;一個在上下文中執行“分割一切”的通用模型。我們將各種分割任務統一為一個通用的上下文學習框架&#xff0c;通過將不同類型的分割數據轉換為相同的圖像格式來兼容這些差異。SegGPT 的訓練被建模為一個帶有隨機顏色映射的上下文著色問題。…