SpringBootDay1|面試題

目錄

一、springboot框架

1、什么是springboot

2、Spring Boot的主要優點

3、springboot核心注解

4、定義banner(springboot的logo)

5、springboot配置文件

6、springboot 整合 jdbc

二、面試題

1)springmvc的作用

?編輯

2)springmvc的核心組件

3)springmvc的內部執行流程

4)@RequestBody注解的作用

5)mvc架構模式

6)properties和yml配置文件的區別


一、springboot框架

spring(IOC、DI、AOP)
springmvc(mvc架構 屬于mvc架構的控制層 ) ----> 使用了spring思想
mybatis (jdbc封裝,連接數據庫 增刪改查)
SSM(spring+springmvc+mybatis) 一堆配置文件

spring.xml---->mybatis.xml---->sqlMapper.xml
springmvc.xml
web.xml
自己配置tomca

1、什么是springboot

其設計目的是用來簡化Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。
Spring Boot 以約定大于配置的核心思想,默認幫我們進行了很多設置,多數 Spring Boot 應用只需要很少的 Spring 配置。同時它集成了大量常用的第三方庫配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz 等等),Spring Boot 應用中這些第三方庫幾乎可以零配置的開箱即用。

2、Spring Boot的主要優點

  • Create stand-alone Spring applications

? ? ?創建獨立Spring應用

  • Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)

? ? ?內嵌web服務器

  • Provide opinionated 'starter' dependencies to simplify your build configuration

? ? ?自動starter依賴,簡化構建配置

  • Automatically configure Spring and 3rd party libraries whenever possible

? ? ?自動配置Spring以及第三方功能

  • Provide production-ready features such as metrics, health checks, and externalized configuration

? ? ?提供生產級別的監控、健康檢查及外部化配置

  • Absolutely no code generation and no requirement for XML configuration

? ? ?無代碼生成、無需編寫XML

  • SpringBoot是整合Spring技術棧的一站式框架,SpringBoot是簡化Spring技術棧的快速開發腳手架;

3、springboot核心注解

@SpringBootApplication
是springboot項目的核心注解
是一個組合注解
底層包含很多子注解
@Target({ElementType.TYPE}) 當前注解使用的位置(類上,方法上,參數上)
@Retention(RetentionPolicy.RUNTIME) 保留策略 決定注解的生命周期 編譯前 運行前 運行期間
@Documented 文檔注解
@Inherited 表示當前注解可以被繼承
@SpringBootConfiguration 創建IOC容器
@Configuration 創建IOC容器
@EnableAutoConfiguration springboot自動裝配注解(最核心注解)
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
@ComponentScan 定義組件掃描的包(默認掃描當前項目啟動類所在的包及其子包)

??@SpringBootApplication?注解詳解

屬性/子注解說明
作用是 Spring Boot 項目的核心注解,用于標記項目的啟動類(主類),啟用自動配置、組件掃描等功能。
使用位置通常標注在啟動類上(即包含?main?方法的類)
是否組合注解是,是一個由多個注解組成的“合成注解”

🧩 組成?@SpringBootApplication?的核心子注解

子注解功能說明
@SpringBootConfiguration創建IOC容器表示該類是一個配置類,底層繼承自?@Configuration,可以定義 Bean
@Configuration創建IOC容器告訴 Spring 容器這是一個 Java 配置類,相當于 XML 配置文件的作用
@EnableAutoConfigurationSpring Boot 自動裝配的核心注解,會根據 classpath 中的依賴自動配置 Bean
@AutoConfigurationPackage將主類所在包及其子包中的 Bean 自動注冊到 Spring 容器中(內部通過?@Import?實現)
@ComponentScan自動掃描并注冊 Bean,默認掃描當前主類所在的包及其子包
@Import({AutoConfigurationImportSelector.class})導入自動配置類的選擇器,決定了哪些自動配置類需要被加載

🔍 元注解(Meta-Annotations)

元注解含義
@Target({ElementType.TYPE})表示該注解只能用于?類級別?上(不能用在方法或參數上)
@Retention(RetentionPolicy.RUNTIME)表示該注解在運行時依然有效,可以通過反射讀取
@Documented表示該注解會被包含在 Javadoc 中
@Inherited表示該注解可以被子類繼承
package com.hl.springboot1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/*
@SpringBootApplication
是springboot項目的核心注解
是一個組合注解
底層包含很多子注解
@Target({ElementType.TYPE}) 當前注解使用的位置(類上,方法上,參數上)
@Retention(RetentionPolicy.RUNTIME) 保留策略 決定注解的生命周期 編譯前 運行前 運行期間
@Documented 文檔注解
@Inherited 表示當前注解可以被繼承
@SpringBootConfiguration 創建IOC容器
@Configuration 創建IOC容器
@EnableAutoConfiguration springboot自動裝配注解(最核心注解)
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
@ComponentScan 定義組件掃描的包(默認掃描當前項目啟動類所在的包及其子包)
*/
@SpringBootApplication
public class Springboot1Application {
public static void main(String[] args) {
SpringApplication.run(Springboot1Application.class, args);
}
}

4、定義banner(springboot的logo)

關于動物的ascii藝術字,自定義Spring Boot 動物 banner下載,各種有意思的banner、ascii圖案,還有中文文字banner,作為Spring Boot和終端命令行banner會讓項目更有意思。-bootschool.net

5、springboot配置文件

.properties配置文件

key=value

.yml配置文件

使用 : 空格 回車 tab鍵 進行縮

有多個配置文件,向激活特定配置文件,實現多個環境的切換
application-dev.yml
application-test.yml
application.yml

spring:profiles:active: dev

6、springboot 整合 jdbc

1)引入jar包

<!--mysql-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<!--springboot整合jdbc的jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependenc

2)添加mysql連接的配置

application-dev.yml

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/yan9username: rootpassword: 123456

3)補全包結構,搭建web層和dao層(省略service)

javaBean類

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
private int deptId;
private String deptName;
private String loc;
}

web層

@RestController
@RequestMapping("/dept")
public class DeptController {
//調用dao層
@Autowired
private DeptDao deptDao;
@RequestMapping("/save")
public int save(Dept dept) {
return deptDao.save(dept);
}
}

dao層

public interface DeptDao {
public int save(Dept dept);
}
@Repository
public class DeptDaoImpl implements DeptDao{
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public int save(Dept dept) {
//調用jdbcTemplate封裝好的方法執行新增
String sql = "insert into dept(dept_name,loc) values(?,?)";
//update 執行增刪改
int num = jdbcTemplate.update(sql,dept.getDeptName(),dept.getLoc());
return num;
}
}

4)測試

二、面試題

1)springmvc的作用

Spring MVC 是 Spring 框架中的一個核心模塊,專門用于構建?基于 Java 的 Web 應用程序。它遵循?MVC(Model-View-Controller)設計模式,將應用程序分為模型(Model)、視圖(View)和控制器(Controller)三層,從而實現代碼的解耦和高效協作。

  • springmvc實現的功能

  1. springmvc接收請求
  2. springmvc接收數據
  3. 返回數據給前端
  4. 頁面跳轉(攜帶數據)
  • Spring MVC 的核心作用

(1) 處理 HTTP 請求和響應

  • 作用:接收客戶端(瀏覽器、移動端等)的 HTTP 請求,解析參數,并返回數據(如 JSON、HTML)。

  • 關鍵組件

    • DispatcherServlet:前端控制器,統一分發請求到對應的 Controller。

    • @Controller?/?@RestController:處理具體業務邏輯的控制器。

?(2) 實現 MVC 分層架構

層級職責Spring MVC 對應實現
Model封裝業務數據和狀態(如數據庫查詢結果)實體類(Entity)、DTO、Service 層返回的對象
View渲染數據(如生成 HTML、JSON、XML)JSP、Thymeleaf、FreeMarker 或直接返回 JSON(前后端分離)
Controller接收請求,調用業務邏輯,返回模型和視圖@Controller?或?@RestController?類中的方法

(3) 提供靈活的請求映射和參數綁定

  • URL 路由:通過?@RequestMapping@GetMapping?等注解將請求映射到方法。

  • 參數解析

    • @RequestParam:獲取 URL 查詢參數。

    • @PathVariable:獲取 RESTful 風格的路徑參數。

    • @RequestBody:解析 JSON/XML 請求體。

    • @ModelAttribute:綁定表單數據到對象。

(4) 支持多種視圖技術

  • 服務端渲染:JSP、Thymeleaf、FreeMarker。

  • 前后端分離:直接返回 JSON/XML(通過?@ResponseBody?或?@RestController)。

(5) 提供攔截器和全局異常處理

  • 攔截器(Interceptor):在請求處理前后插入邏輯(如權限校驗、日志記錄)。

  • 全局異常處理:通過?@ControllerAdvice?統一捕獲異常,返回友好錯誤信息。

(6) 集成其他 Spring 功能

  • 依賴注入(DI):通過?@Autowired?管理組件依賴。

  • 事務管理:結合?@Transactional?實現數據庫事務控制。

  • AOP:實現日志、權限等橫切關注點。

Spring MVC 的工作流程

  1. 用戶發起請求?→ 請求到達?DispatcherServlet前端控制器)。

  2. DispatcherServlet?查詢處理器映射HandlerMapping)→ 找到對應的 Controller 方法。

  3. 調用 Controller?→ 執行業務邏輯(可能調用 Service 和 Repository 層)。

  4. 返回模型和視圖

    • 如果返回?String(如?"success"),ViewResolver?會解析為具體的視圖(如?success.jsp)。

    • 如果返回?@ResponseBody?或?@RestController,直接序列化為 JSON/XML。

  5. 渲染響應?→ 返回給客戶端。

2)springmvc的核心組件

1、DispatcherServlet 前端控制器
2、HandlerMapping 處理器映射器
3、HandlerAdapter 處理器適配器
4、Handler 處理器
5、ViewResolver 視圖解析器組件

3)springmvc的內部執行流程

1、瀏覽器發起請求: http://localhost:8080/user/getById?id=1
2、瀏覽器解析地址:http:// ? ? localhost ? ?8080
3、定位到硬件服務器 ip 和 軟件服務器 8080(tomcat應用)
4、通過8080----->部署的項目
5、前端控制器接收請求 解析url路徑得到資源路徑 /user/getById
6、前端控制器 通過調用 處理器映射器,查詢 handler是否存在
7、如果路徑存在,返回路徑的執行鏈給前端控制器。如果不存在,返回404。
執行鏈包含了目標方法前的一系列過濾器和攔截器 目標方法路徑 及后置的過濾器和攔截器。
8、前端控制器 調用處理器適配器 請求執行handler(目標方法)
9、處理器適配器封裝參數到目標方法的參數中(解析httpServletRequest ,調用
request.getParameter方法)
10、執行目標handler(目標方法) 目標handler響應結果給處理器適配器(數據和視圖名)
11、處理器是配置返回modelandview給前端控制器
12、前端控制器,請求視圖解析器, 拼接前綴路徑和后綴路徑,得到完整的視圖名
13、前端控制器,將model中的數據,在指定的視圖頁面上進行渲染
14、響應結果給前端。

4)@RequestBody注解的作用

@RequestBody?是 Spring MVC 中用于?處理 HTTP 請求體數據?的核心注解,主要作用是將請求體中的內容(如 JSON、XML)自動綁定到 Java 對象

核心作用:將 HTTP 請求體(JSON/XML)自動反序列化為 Java 對象。

5)mvc架構模式

MVC 架構 model 業務層、view 視圖層、controller控制層
view 視圖層:用戶交互 html、css、js、vue、小程序
controller 控制層: 接收前端請求、接收前端數據、返回數據給前端 spring webmvc (web包)
model 業務層: 業務操作 service、dao、pojo

6)properties和yml配置文件的區別

.properties配置文件

key=value

.yml配置文件

使用 : 空格 回車 tab鍵 進行縮

有多個配置文件,向激活特定配置文件,實現多個環境的切換
application-dev.yml
application-test.yml
application.yml

spring:profiles:active: dev

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

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

相關文章

jQuery Ajax中dataType 和 content-type 參數的作用詳解

jQuery Ajax中dataType與contentType參數解析 一、核心概念對比 參數作用對象數據類型默認值dataType響應數據預期接收的數據格式jQuery自動判斷&#xff08;根據響應頭MIME類型&#xff09;contentType請求數據發送數據的編碼格式application/x-www-form-urlencoded 二、da…

幾款常用的虛擬串口模擬器

幾款常用的虛擬串口模擬器&#xff08;Virtual Serial Port Emulator&#xff09;&#xff0c;適用于 Windows 系統&#xff0c;可用于開發和調試串口通信應用&#xff1a; 1. com0com (開源免費) 特點&#xff1a; 完全開源免費&#xff0c;無功能限制。 可創建多個虛擬串口…

LLM筆記(六)線性代數

公式速查表 1. 向量與矩陣&#xff1a;表示、轉換與知識存儲的基礎 向量表示 (Vectors): 語義的載體 在LLM中&#xff0c;向量 x ∈ R d \mathbf{x}\in\mathbb{R}^d x∈Rd 是信息的基本單元&#xff0c;承載著豐富的語義信息&#xff1a; 詞嵌入向量 (Word Embeddings)&am…

[特殊字符] Word2Vec:將詞映射到高維空間,它到底能解決什么問題?

一、在 Word2Vec 之前,我們怎么處理語言? 在 Word2Vec 出現之前,自然語言處理更多是“工程方法”,例如字符串匹配、關鍵詞提取、正則規則...。但這些表示通常缺乏語義,詞與詞之間看不出任何聯系以及非常淺顯。當然,技術沒有好壞,只有適合的場景。例如: 關鍵詞匹配非常…

棧和隊列的模擬實現

棧和隊列的模擬實現 容器適配器priority_queue(優先級隊列&#xff09;priority_queue的使用priority_queue的模擬實現&#xff1a; 仿函數什么叫仿函數&#xff1f;需要自己實現仿函數的情況&#xff1a; 棧的模擬實現隊列的模擬實現deque&#xff08;vector和list的縫合怪&am…

idea本地debug斷點小技巧

idea本地debug斷點小技巧 簡單的設置斷點條件 斷點后&#xff0c;右鍵這個斷點&#xff0c;可以在 condition 中填寫能得出布爾的表達式 a 1 你如果寫如下&#xff0c;表示先給他賦值&#xff0c;然后斷住 a 2; true 斷點后設置某個變量的值 在 debug 區域可以設置變量…

Oracle中如何解決FREE BUFFER WAITS

基于性能上的考慮&#xff0c;服務器進程在掃描LRU主列的同時&#xff0c;會將臟塊移至LRU-W列&#xff0c;如果發現沒有足夠可用&#xff08;可替換&#xff09;的BUFFER CACHE&#xff0c;進程并不會無止盡地掃描整條LRU主列&#xff0c;而是在掃描到某個閥值&#xff08;該閥…

Git命令使用全攻略:從創建分支到合并的完整流程

Git命令使用全攻略&#xff1a;從創建分支到合并的完整流程 引言一、初始化項目與基礎配置1.1 克隆遠程倉庫1.2 查看當前分支狀態 二、創建與管理分支2.1 從main分支創建新功能分支2.2 查看分支列表2.3 提交代碼到新分支2.4 推送分支到GitHub 三、版本發布與標簽管理3.1 創建輕…

MATLAB跳動的愛心

520&#xff0c;一個會動的心~~~ function particleHeart2 % author : slandarer% 所需匿名函數 col1Func(n) repmat([255,158,196]./255,[n,1])repmat([-39,-81,-56]./255,[n,1]).*rand([n,1]); col2Func(n) repmat([118,156,216]./255,[n,1])repmat([137,99,39].*.1./255,[n,…

Go的單測gomock及覆蓋率命令

安裝gomock&#xff1a; go get github.com/golang/mock/gomockgo get github.com/golang/mock/mockgen 使用 mockgen 生成 mock 代碼: 參考 mockgen -sourceservice/user.go -destinationservice /mocks/mock_user_service.go -packagemocks go test -coverprofilecoverage.ou…

vue添加loading后修復頁面渲染問題

問題&#xff1a;想要通過選擇流程&#xff08;1&#xff09;后加載出角色信息&#xff08;2&#xff09; 選擇后無法展示經過排查&#xff0c;再調用接口給角色數組賦值后&#xff0c;頁面在接口調用完之前就已經渲染完成。接口是采用的異步加載解決&#xff1a;loadingRoles…

Python入門手冊:Python簡介,什么是Python

在當今數字化時代&#xff0c;編程語言猶如一把把神奇的鑰匙&#xff0c;能夠開啟通往技術世界的大門。而Python&#xff0c;無疑是其中最閃耀的一顆明星。今天&#xff0c;就讓我們一起走進Python的世界&#xff0c;從它的起源、應用領域以及優缺點三個方面&#xff0c;來全面…

用PyTorch在超大規模下訓練深度學習模型:并行策略全解析

我猜咱們每個人肯定都累壞了&#xff0c;天天追著 LLM 研究社區跑&#xff0c;感覺每天都冒出個新的最牛模型&#xff0c;把之前的基準都給打破了呢。要是你好奇為啥創新速度能這么快&#xff0c;那主要就是研究人員能夠在超大規模下訓練和驗證模型啦&#xff0c;這全靠并行計算…

提示工程(Prompt Engineering)應用技巧

Prompt&#xff08;提示&#xff09;就是用戶與大模型交互輸入的代稱。即我們給大模型的輸入稱為 Prompt&#xff0c;而大模型返回的輸出一般稱為 Completion。 Prompt 需要清晰明確地表達需求&#xff0c;提供充足上下文&#xff0c;使語言模型能夠準確理解我們的意圖。更長、…

[原創](現代Delphi 12指南):[macOS 64bit App開發]: 如何獲取目錄大小?

[作者] 常用網名: 豬頭三 出生日期: 1981.XX.XX 企鵝交流: 643439947 個人網站: 80x86匯編小站 編程生涯: 2001年~至今[共24年] 職業生涯: 22年 開發語言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 開發工具: Visual Studio、Delphi、XCode、…

Unity入門學習(四)3D數學(4)之四元數Quaternion

目錄 一、什么是四元數 二、和歐拉角的關聯以及為什么會出現四元數 三、四元數的基本組成 Unity中的表示&#xff1a; 四、四元數Quaternion這個類中具有的屬性和方法 常用屬性 核心方法 五、四元數之間的計算 1. 叉乘&#xff08;組合旋轉&#xff09; 2. 點積&#…

活體檢測接口全面評測:2025年活體檢測選擇指南

一、活體檢測&#xff1a;數字化時代的身份驗證基石 活體檢測是一種通過分析人體生物特征動態變化來驗證身份真實性的技術&#xff0c;其核心在于區分真實人體與偽造樣本&#xff08;如照片、視頻、3D 面具等&#xff09;。技術原理主要基于以下維度&#xff1a; 多模態數據采…

物聯網工程畢業設計課題實踐指南

1. 智能家居控制系統 1.1 基于ZigBee的智能家居控制 實踐過程 硬件選型主控:CC2530/CC2531傳感器:溫濕度、光照、人體紅外執行器:繼電器、電機、LED燈系統架構 A[傳感器層] --> B[ZigBee網絡] B --> C[網關] C --> D[云平臺] D --> E[手機APP] 開…

電網中竊電分析:概念、算法與應用

一、引言 在現代電力系統中&#xff0c;竊電行為是一個嚴重影響電網經濟運行和供電秩序的問題。竊電不僅導致供電企業的經濟損失&#xff0c;破壞了電力市場的公平性&#xff0c;還可能對電網的安全穩定運行構成威脅&#xff0c;甚至引發安全事故。隨著科技的不斷進步&#xff…

一洽小程序接入說明

接入說明 文檔以微信小程序作為示例介紹&#xff0c;其他小程序接入操作與此類似 1、添加校驗文件 開發者使用微信小程序提供的 webview 組件可以實現打開一洽的H5對話 小程序的“域名配置”中添加一洽的對話域名地址&#xff0c;需要獲取校驗文件提供給一洽放在域名根目錄下…