目錄
一、springboot框架
1、什么是springboot
2、Spring Boot的主要優點
3、springboot核心注解
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 配置文件的作用 |
@EnableAutoConfiguration | Spring 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實現的功能
- springmvc接收請求
- springmvc接收數據
- 返回數據給前端
- 頁面跳轉(攜帶數據)
- 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 的工作流程
-
用戶發起請求?→ 請求到達?
DispatcherServlet
(前端控制器)。 -
DispatcherServlet
?查詢處理器映射(HandlerMapping
)→ 找到對應的 Controller 方法。 -
調用 Controller?→ 執行業務邏輯(可能調用 Service 和 Repository 層)。
-
返回模型和視圖:
-
如果返回?
String
(如?"success"
),ViewResolver
?會解析為具體的視圖(如?success.jsp
)。 -
如果返回?
@ResponseBody
?或?@RestController
,直接序列化為 JSON/XML。
-
-
渲染響應?→ 返回給客戶端。
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