Spring 框架需要的 jar 包解析與使用小結(jié)
我在維護(hù)一個(gè)老的 Java Web 項(xiàng)目時(shí),發(fā)現(xiàn)它并沒(méi)有使用 Spring Boot,而是直接基于 Spring 4.x 搭建的。很多新同學(xué)剛接觸這類項(xiàng)目時(shí),常常會(huì)搞不清楚:到底需要哪些 Spring 的 jar 包才能讓?xiě)?yīng)用跑起來(lái)?
本文就結(jié)合我在項(xiàng)目中踩過(guò)的坑,總結(jié)了 Spring 核心 jar 包的作用和最小依賴組合,希望能幫到正在學(xué)習(xí)或維護(hù) Spring 的同學(xué)。
一、Spring 框架的模塊化設(shè)計(jì)
Spring 框架采用模塊化設(shè)計(jì),將不同功能拆分為多個(gè) jar 包。這樣開(kāi)發(fā)者可以根據(jù)實(shí)際需求來(lái)選擇依賴,而不是“全量引入”。
Spring 模塊主要包括:
- 核心容器:spring-core、spring-beans、spring-context、spring-expression
- AOP 支持:spring-aop、spring-aspects
- Web 開(kāi)發(fā):spring-web、spring-webmvc
- 數(shù)據(jù)訪問(wèn):spring-jdbc、spring-tx
- 測(cè)試支持:spring-test
這種設(shè)計(jì)讓 Spring 既可以作為一個(gè)完整框架使用,也能作為輕量化工具引入。
二、常用 jar 包與功能對(duì)照
| jar 包 | 功能描述 | 使用場(chǎng)景 |
|---|---|---|
| spring-core.jar | 提供核心工具類(反射、資源加載、類型轉(zhuǎn)換等) | 所有模塊依賴的基礎(chǔ) |
| spring-beans.jar | Bean 定義與依賴注入 | IoC 容器的核心 |
| spring-context.jar | ApplicationContext、事件傳播、國(guó)際化 | 容器擴(kuò)展功能 |
| spring-expression.jar | Spring 表達(dá)式語(yǔ)言(SpEL) | XML 和注解配置動(dòng)態(tài)屬性 |
| spring-aop.jar | AOP 支持(JDK 動(dòng)態(tài)代理、CGLIB) | 事務(wù)、日志、權(quán)限攔截 |
| spring-web.jar | 提供 Web 集成功能 | Servlet 環(huán)境集成 |
| spring-webmvc.jar | Spring MVC 框架實(shí)現(xiàn) | DispatcherServlet、控制器注解 |
| spring-jdbc.jar | JDBC 封裝,簡(jiǎn)化數(shù)據(jù)庫(kù)訪問(wèn) | DAO 層開(kāi)發(fā) |
| spring-tx.jar | 事務(wù)管理支持 | 與數(shù)據(jù)庫(kù)交互的業(yè)務(wù)邏輯 |
| spring-test.jar | 集成 JUnit,支持單元測(cè)試 | 單元與集成測(cè)試 |
三、Spring 最小可運(yùn)行依賴
如果你只想運(yùn)行一個(gè)最簡(jiǎn)單的 Spring IoC 容器,至少需要以下 jar 包:
- spring-core.jar
- spring-beans.jar
- spring-context.jar
- spring-expression.jar
這四個(gè)是 Spring 容器最小依賴組合。
四、示例:最小化 Spring 應(yīng)用
下面用一個(gè)簡(jiǎn)單示例展示如何使用這些 jar 包啟動(dòng)一個(gè) Spring IoC 容器。
beans.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 定義一個(gè)簡(jiǎn)單的 Bean -->
<bean id="helloService" class="com.demo.HelloService"/>
</beans>HelloService.java
package com.demo;
public class HelloService {
public void sayHello() {
System.out.println("Hello, Spring!");
}
}Main.java
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("beans.xml");
HelloService service = context.getBean("helloService", HelloService.class);
service.sayHello(); // 輸出:Hello, Spring!
}
}只要引入上面提到的 四個(gè)核心 jar 包,這個(gè)程序就可以正常運(yùn)行。
五、實(shí)踐經(jīng)驗(yàn)與建議
- 如果是 Web 項(xiàng)目,還需要引入
spring-web和spring-webmvc。 - 如果涉及數(shù)據(jù)庫(kù)事務(wù),需要額外加上
spring-jdbc和spring-tx。 - 在 團(tuán)隊(duì)項(xiàng)目 中,建議使用 Maven 或 Gradle 管理依賴,避免手動(dòng)拷貝 jar 包導(dǎo)致版本混亂。
六、總結(jié)與延伸閱讀
本文從我的實(shí)際項(xiàng)目經(jīng)驗(yàn)出發(fā),介紹了 Spring 框架需要的核心 jar 包 以及最小依賴組合,并用示例展示了 IoC 容器的運(yùn)行方式。希望能幫到剛接觸 Spring 的同學(xué),避免因?yàn)?jar 包缺失而浪費(fèi)時(shí)間。
到此這篇關(guān)于Spring 框架需要的 jar 包解析與使用小結(jié)的文章就介紹到這了,更多相關(guān)spring框架jar包使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring Boot項(xiàng)目如何使用外部application.yml配置文件啟動(dòng)JAR包
- SpringBoot項(xiàng)目Jar包使用systemctl運(yùn)行過(guò)程
- 使用Springboot 打jar包實(shí)現(xiàn)分離依賴lib和配置
- 使用Springboot打成jar包thymeleaf的問(wèn)題
- 使用springboot的jar包能夠以service方式啟動(dòng)
- 使用springboot 打包插件去除jar包瘦身
- 使用eclipse 實(shí)現(xiàn)將springboot項(xiàng)目打成jar包
- 使用SpringBoot打jar包并部署到Tomcat詳細(xì)步驟
相關(guān)文章
Springboot中yml文件沒(méi)有葉子圖標(biāo)的解決
這篇文章主要介紹了Springboot中yml文件沒(méi)有葉子圖標(biāo)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
shiro與spring集成基礎(chǔ)Hello案例詳解
這篇文章主要介紹了shiro與spring集成基礎(chǔ)Hello案例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
redis setIfAbsent和setnx的區(qū)別與使用說(shuō)明
這篇文章主要介紹了redis setIfAbsent和setnx的區(qū)別與使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
命令行使用支持?jǐn)帱c(diǎn)續(xù)傳的java多線程下載器
java命令行下載器,支持?jǐn)帱c(diǎn)續(xù)傳下載,多線程下載,需要的朋友可以參考下2014-02-02
解決java后臺(tái)登錄前后cookie不一致問(wèn)題
本文主要介紹了java后臺(tái)登錄前后cookie不一致的解決方案,具有很好的參考價(jià)值,需要的朋友一起來(lái)看下吧2016-12-12

