99久久精品国产片-99久久精品国产免费-99久久精品国产麻豆-99久久精品国产国产毛片-99久久精品国产高清一区二区-99久久精品费精品国产一区二区

400-609-4309

java開發所用框架

java開發所用框架

java開發所用框架

摘要

Java開發領域的框架就像工具箱里的扳手、螺絲刀——沒有它們不是不能干活,但有了它們能讓你從“徒手擰螺絲”變成“電動工具高效作業”。不過框架太多也讓人頭大:Spring全家桶、MyBatis、Dubbo、Maven……到底哪些是必學的?不同場景該選哪個?本文從Java開發的實際痛點出發,系統梳理Web開發、ORM、微服務、構建工具等核心領域的主流框架,不僅告訴你“是什么”,更教你“怎么用”“怎么選”,幫你告別“框架選擇困難癥”,真正把框架變成提效神器。

一、為什么Java開發離不開框架?先聊聊那些“沒框架時的痛”

如果你是剛學Java的小白,可能會覺得“框架”這兩個字有點玄乎——直接用JDK自帶的類庫寫代碼不行嗎?說實話,我剛入行時也這么想過,直到接手了一個“純原生Java”寫的老項目:

寫Web接口時,得自己處理HTTP請求解析、參數校驗,光一個“從請求里取個userId”就要寫20行代碼;

操作數據庫時,JDBC的Connection、Statement、ResultSet反復創建銷毀,代碼里全是try-catch-finally,一個查詢功能寫得比業務邏輯還長;

項目上線后改個配置,得重新打包部署,運維大哥天天追著我問“能不能搞個動態配置”……

這些問題,本質上都是“重復造輪子”。而框架的核心價值,就是把這些通用問題(如Web請求處理、數據庫交互、事務管理)封裝成現成的工具,讓開發者專注于業務邏輯。沒有框架的Java開發,就像用原始工具蓋房子;有了框架,相當于直接用預制構件搭樓——效率天差地別。

二、Web開發框架:從“手寫Servlet”到“注解搞定接口”

Web開發是Java最核心的應用場景之一,而Web框架的進化史,就是一部“解放雙手”的歷史。

2.1 Spring MVC:Java Web開發的“半壁江山”

如果你問“Java Web框架學哪個”,90%的開發者會告訴你“Spring MVC”。它不是最早的Web框架,但絕對是最主流的——幾乎所有中大型Java項目都在用。

核心解決什么痛?

傳統Servlet開發需要繼承HttpServlet、重寫doGet/doPost,還得在web.xml里配置映射關系,麻煩且不靈活。Spring MVC用“注解驅動”簡化了這一切:

java

// 一個簡單的接口,用Spring MVC只要3步

@RestController // 1. 標記這是個控制器

@RequestMapping("/user") // 2. 配置請求路徑前綴

public class UserController {

@GetMapping("/{id}") // 3. 配置GET請求,接收路徑參數id

public User getUser(@PathVariable Long id) {

return userService.findById(id); // 直接返回業務結果,框架自動轉JSON

}

}

不用寫一行XML配置,不用處理請求解析,甚至連JSON轉換都幫你做了——這就是Spring MVC的強大之處。

適用場景:幾乎所有Java Web項目,從小型接口服務到大型企業級應用都能hold住。

小缺點:作為Spring生態的一部分,想用好它最好先了解Spring的IOC容器,對純新手來說有一點點學習成本(但絕對值得)。

2.2 Struts2:曾紅極一時,現在還需要學嗎?

如果你翻10年前的Java教程,Struts2一定是重點。它比Spring MVC更早普及,靠“攔截器”“OGNL表達式”等特性火過一陣。但現在……除非維護老項目,否則不建議學新的

為啥?一方面,Struts2早期爆出過不少安全漏洞(比如著名的S2-045),雖然現在修復了,但很多企業已經“談Struts色變”;另一方面,它的配置比Spring MVC繁瑣,性能也稍遜一籌。現在新項目基本都用Spring MVC,老項目也在慢慢遷移——所以了解即可,不用深鉆。

三、ORM框架:把“數據庫表”變成“Java對象”

操作數據庫是Java開發的“家常便飯”,但原生JDBC太啰嗦了:寫SQL、處理連接、封裝結果集……ORM(對象關系映射)框架就是來解決這個問題的——讓你用操作Java對象的方式操作數據庫。

3.1 MyBatis:“半自動化”ORM,靈活到飛起

MyBatis是國內最火的ORM框架,沒有之一。它的核心思想是“SQL你自己寫,參數和結果集的映射我來做”——既保留了SQL的靈活性,又省去了重復的封裝代碼。

怎么用?3步搞定數據庫查詢

1. 定義Java實體類(和數據庫表對應):

java

public class User {

private Long id;

private String name;

private Integer age;

// getter/setter省略

}

寫Mapper接口(聲明方法):

java

public interface UserMapper {

User selectById(Long id); // 方法名對應SQL的id

}

寫XML映射文件(配置SQL和映射關系):

xml

完事!調用時直接用userMapper.selectById(1L),MyBatis會自動執行SQL、把結果封裝成User對象。

為什么大家愛用? 因為SQL完全自己掌控,優化起來方便。比如復雜的聯表查詢、分頁、動態SQL(用標簽拼接條件),MyBatis處理起來比全自動ORM框架靈活得多。

適用場景:需要頻繁優化SQL、業務邏輯復雜的項目(比如電商、金融系統)。

3.2 Hibernate:“全自動”ORM,也曾是王者

Hibernate比MyBatis更早出現,它的理念是“完全屏蔽SQL”——你不用寫一句SQL,直接調用session.save(user)就能保存數據,框架會自動生成SQL。

比如保存用戶:

java

Session session = sessionFactory.openSession();

Transaction tx = session.beginTransaction();

User user = new User();

user.setName("張三");

user.setAge(25);

session.save(user); // 自動生成INSERT INTO user (name, age) VALUES (?, ?)

tx.commit();

session.close();

聽起來很美好?但實際開發中,“全自動”往往意味著“難優化”。比如復雜查詢時,Hibernate生成的SQL可能很臃腫,想改還得學它的HQL查詢語言,反而不如MyBatis直接寫SQL來得痛快。

現在還能用嗎? 能用,但國內用得不多了。不過它的思想影響了很多框架,比如JPA(Java持久化規范)就是基于Hibernate的理念制定的,現在Spring Data JPA(簡化JPA操作的框架)在一些快速開發的項目中還有應用。

四、微服務框架:從“單體應用”到“分布式系統”

隨著項目越來越大,單體應用(所有代碼打包成一個war包部署)會變得“牽一發而動全身”——改個小功能要全量發布,一個模塊崩了整個系統癱瘓。這時候,微服務框架就派上用場了。

4.1 Spring Boot:微服務開發的“入門鑰匙”

很多人以為Spring Boot是微服務框架,其實它更像“Spring全家桶的簡化工具”。以前用Spring MVC+Spring需要配一堆XML(比如applicationContext.xml、spring-mvc.xml),而Spring Boot的核心是“約定大于配置”——你不用配XML,它默認幫你做好大部分配置,直接寫業務代碼就行。

快速體驗?5分鐘搭個Web服務

1. 用Spring Initializr(https://start.spring.io/)選“Spring Web”依賴,生成項目;

2. 寫個控制器:

java

@RestController

public class HelloController {

@GetMapping("/hello")

public String hello() {

return "Hello Spring Boot!";

}

}

3. 運行主類(帶@SpringBootApplication注解的類),訪問http://localhost:8080/hello——搞定!

沒有XML配置,沒有手動導包,甚至連Tomcat都內置了(直接運行main方法就能啟動Web服務)。現在幾乎所有Java微服務項目,都是用Spring Boot作為基礎搭建的。

4.2 Spring Cloud:微服務“全家桶”,啥都給你配齊

微服務拆分后,會遇到新問題:服務怎么發現對方(服務注冊與發現)?請求怎么路由(負載均衡)?服務掛了怎么辦(熔斷降級)?這些問題,Spring Cloud一站式解決。

它不是一個單獨的框架,而是一堆框架的組合:

Eureka/Nacos:服務注冊中心(所有服務在這里“報到”,互相知道地址);

Ribbon/LoadBalanced:負載均衡(請求自動分發到多個服務實例,避免單點壓力);

Feign:聲明式服務調用(像調用本地方法一樣調用遠程服務,不用寫HTTP請求代碼);

Hystrix/Sentinel:熔斷降級(某個服務掛了,快速返回錯誤,避免整個系統雪崩);

Gateway:API網關(統一入口,處理認證、限流、路由)。

舉個Feign調用的例子,你想調用用戶服務的接口,只要:

java

@FeignClient(name = "user-service") // 聲明要調用的服務名

public interface UserFeignClient {

@GetMapping("/user/{id}") // 對應用戶服務的接口路徑

User getUserById(@PathVariable("id") Long id);

}

然后直接@Autowired UserFeignClient,調用getUserById(1L)就行——底層HTTP請求、負載均衡全由框架處理,太省心了。

適用場景:中大型分布式系統,需要解決服務治理、高可用問題。

4.3 Dubbo:阿里系微服務框架,輕量且高效

Dubbo是阿里巴巴開源的微服務框架,比Spring Cloud更早出現。它的特點是“輕量級”“高性能”,核心專注于“服務調用”(遠程過程調用RPC),其他功能(如注冊中心、配置中心)可以集成第三方組件(比如用ZooKeeper做注冊中心)。

和Spring Cloud比,Dubbo更適合“追求性能”的場景(比如電商的訂單服務調用庫存服務,要求低延遲)。不過近年來Spring Cloud Alibaba(Spring Cloud的子項目,整合了Dubbo、Nacos等阿里系組件)的出現,讓兩者的界限越來越模糊——很多項目會混合使用Spring Cloud的網關和Dubbo的RPC調用。

五、構建工具:讓項目“從代碼到部署包”自動化

寫代碼只是開發的一部分,更麻煩的是“編譯、打包、依賴管理”。比如你用了Spring Boot,需要導入它的jar包;團隊協作時,每個人的依賴版本要一致——這些問題,構建工具幫你搞定。

5.1 Maven:最主流的構建工具,“約定大于配置”

Maven的核心是“POM文件”(pom.xml),你在里面聲明項目依賴,它會自動從中央倉庫下載jar包,還能幫你編譯代碼、打包成war/jar包。

舉個簡單的pom.xml:

xml

org.springframework.boot

spring-boot-starter-web

3.2.0

Maven會根據groupId(組織標識)、artifactId(項目標識)、version(版本)找到對應的jar包,自動下載到本地倉庫。

為啥大家都用它? 因為“約定大于配置”——它規定了源代碼放src/main/java,測試代碼放src/test/java,打包命令是mvn package,所有人都按這個規范來,協作效率大大提高。

5.2 Gradle:新一代構建工具,比Maven更快、更靈活

Maven雖然主流,但XML配置寫起來有點啰嗦,而且構建速度慢(尤其依賴多的時候)。Gradle就是來解決這些問題的,它用Groovy/Kotlin語言寫配置,代碼更簡潔,構建速度也快得多。

同樣是導入Spring Boot Web依賴,Gradle的build.gradle只要:

groovy

dependencies {

implementation &'org.springframework.boot:spring-boot-starter-web:3.2.0&'

}

比XML清爽不少吧?現在很多新項目(尤其是Spring官方的示例項目)都用Gradle了,如果你是新手,學Maven還是Gradle?我的建議是:先學Maven(因為老項目多),再了解Gradle(未來趨勢)。

六、測試框架:讓代碼“靠譜”的最后一道防線

寫代碼容易,寫“不出bug的代碼”難。測試框架就是幫你自動化驗證代碼正確性的工具,避免“手動點來點去測功能”的低效操作。

6.1 JUnit 5:單元測試“標配”

JUnit是Java單元測試的事實標準,現在最新的是JUnit 5(Jupiter)。它讓你能快速寫測試用例,比如測試一個加法工具類:

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class CalculatorTest {

@Test // 標記這是個測試方法

void add() {

Calculator calculator = new Calculator();

int result = calculator.add(2, 3);

assertEquals(5, result); // 斷言結果等于5,如果不等則測試失敗

}

}

``

運行測試時,框架會自動執行所有帶@Test`的方法,告訴你哪些通過、哪些失敗。現在主流的IDE(IDEA、Eclipse)都集成了JUnit,點一下就能運行,非常方便。

6.2 Mockito:解決“依賴難模擬”的問題

單元測試講究“隔離性”——測試A方法時,不要依賴B方法的真實實現(萬一B方法有bug呢?)。Mockito就是用來“模擬”依賴的工具,比如你要測試Service層,但Service依賴了Mapper(數據庫操作),可以用Mockito模擬Mapper的返回值:

@ExtendWith(MockitoExtension.class) // 啟用Mockito

public class UserServiceTest {

@Mock // 模擬一個UserMapper

private UserMapper userMapper;

@InjectMocks // 把模擬的mapper注入到userService里  

private UserService userService;

@Test

void getUserById() {

// 當調用userMapper.selectById(1L)時,返回預設的User對象

User mockUser = new User(1L, "張三", 25);

when(userMapper.selectById(1L)).thenReturn(mockUser);

// 測試userService的getUserById方法

User result = userService.getUserById(1L);

// 斷言結果正確

assertEquals("張三", result.getName());

}

}

這樣即使數據庫里沒數據,測試也能正常運行,專注驗證Service層的邏輯是否正確。

七、框架選型實戰:別盲目跟風,適合的才是最好的

學了這么多框架,可能有人會問:“我該選哪個?”其實沒有“萬能框架”,關鍵看你的項目場景:

小項目/快速開發:Spring Boot + MyBatis + Maven 足夠,簡單高效;

中大型分布式系統:Spring Boot + Spring Cloud + MyBatis + Gradle,解決服務治理和性能問題;

追求極致性能:可以考慮用Dubbo替換Spring Cloud的Feign做服務調用;

老項目維護:可能會遇到Struts2、Hibernate,了解基本用法即可,重點是學會遷移到新框架。

一個小提醒:別為了“用框架而用框架”。比如一個簡單的CRUD小工具,用Spring Boot就夠了,沒必要上微服務——過度設計比沒設計更可怕。

框架是Java開發的“腳手架”,用好它們能讓你少走彎路、效率翻倍。但記住:框架只是工具,真正的核心是“解決問題的能力”。與其糾結“學哪個框架”,不如先搞懂每個框架解決什么痛點,再結合項目需求選擇。隨著你經驗越來越多,會發現這些框架的設計思想(比如IOC、AOP、面向接口編程)才是最值得學習的——畢竟框架會更新換代,但好的思想永遠不過時。

12 12 分享:

相關課程

發表評論

登錄后才能評論,請登錄后發表評論...
提交評論

最新課程

最新專題

一本伊大人香蕉高清在线观看| 日韩中文字幕一区二区不卡| 九九久久国产精品| 亚洲精品中文一区不卡| 国产伦精品一区二区三区在线观看 | 午夜家庭影院| 国产视频在线免费观看| 香蕉视频一级| 久久国产精品只做精品| 一a一级片| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 999精品视频在线| 午夜欧美成人香蕉剧场| 999久久66久6只有精品| 可以免费在线看黄的网站| 成人免费观看的视频黄页| 999精品在线| 国产欧美精品| 精品视频在线观看免费| 天天做人人爱夜夜爽2020毛片| 欧美激情一区二区三区在线播放 | 一级片免费在线观看视频| 国产视频久久久| 精品视频在线观看视频免费视频| 国产综合成人观看在线| 亚洲第一页乱| 麻豆系列 在线视频| 国产高清在线精品一区二区| 91麻豆精品国产综合久久久| 成人免费一级纶理片| 亚洲爆爽| 亚洲精品影院一区二区| 成人a级高清视频在线观看| 亚洲第一页乱| 91麻豆精品国产自产在线 | 天天做日日爱夜夜爽| 国产麻豆精品视频| 精品国产一区二区三区免费 | 欧美激情伊人| 成人免费网站视频ww| 日韩中文字幕在线亚洲一区| 色综合久久天天综合| 国产麻豆精品免费密入口| 日韩欧美一二三区| 999精品视频在线| a级精品九九九大片免费看| 欧美国产日韩久久久| 精品视频在线看| 精品在线免费播放| 天天色色网| 国产a毛片| 欧美国产日韩一区二区三区| 精品国产三级a| 日本免费乱理伦片在线观看2018| 韩国三级香港三级日本三级la | 免费的黄视频| 日韩中文字幕在线亚洲一区| 欧美激情一区二区三区在线播放| 黄色免费三级| 午夜久久网| 91麻豆爱豆果冻天美星空| 欧美激情一区二区三区视频| 国产精品1024永久免费视频| 精品国产一区二区三区久| 国产视频一区二区三区四区| 欧美日本免费| 免费一级片网站| 精品国产香蕉在线播出| 久久久久久久网| 毛片高清| 免费国产在线观看| 精品国产三级a| 精品视频一区二区三区免费| 日韩一级黄色| 青青久久国产成人免费网站| 精品视频一区二区三区| 日韩在线观看免费| 久久精品道一区二区三区| 久久精品道一区二区三区| 日韩综合| 精品视频免费在线| 天天色成人网| 日韩中文字幕在线观看视频| 精品视频一区二区| 精品视频一区二区| 日本免费乱人伦在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 青青青草视频在线观看| 日韩字幕在线| 夜夜操网| 日本特黄特黄aaaaa大片| 欧美日本国产| 精品视频在线观看免费| 国产成人精品综合在线| 精品国产香蕉在线播出| 精品视频一区二区| 免费国产在线观看| 国产成人精品综合| 亚洲不卡一区二区三区在线| 成人免费高清视频| 国产伦精品一区三区视频| 精品国产亚洲一区二区三区| 久久99青青久久99久久| 亚洲天堂免费| 久久99中文字幕| 欧美大片一区| 日韩专区亚洲综合久久| 国产网站免费在线观看| 色综合久久天天综合| 午夜激情视频在线播放| 精品国产一区二区三区免费 | 国产成人精品综合| 91麻豆精品国产综合久久久| 成人影院一区二区三区| 亚洲精品中文一区不卡| 国产a毛片| 四虎影视精品永久免费网站| 黄视频网站免费看| 亚洲第一视频在线播放| 精品国产亚洲一区二区三区| 久草免费资源| 午夜在线影院| 免费毛片播放| 沈樵在线观看福利| 国产国语对白一级毛片| 国产91精品一区| 国产一区二区精品久久| 四虎影视库| 欧美日本国产| 午夜在线影院| 午夜久久网| 99色视频在线观看| 欧美日本免费| 日本在线不卡视频| 黄视频网站在线观看| 精品国产一级毛片| 一级女性全黄生活片免费| 可以免费在线看黄的网站| 国产一区免费观看| 日日爽天天| 四虎影视库| 精品国产亚洲人成在线| 成人在激情在线视频| 久久福利影视| 久久国产精品永久免费网站| 免费国产在线视频| 沈樵在线观看福利| 久久精品免视看国产明星| 精品视频在线观看一区二区| 国产网站免费在线观看| 亚洲爆爽| 九九精品久久久久久久久| 国产视频一区在线| 毛片高清| 91麻豆国产福利精品| 香蕉视频亚洲一级| 国产91精品露脸国语对白| 你懂的国产精品| 日韩一级黄色大片| 一级女性大黄生活片免费| 国产网站免费在线观看| 精品视频在线观看免费| 99色视频| 日韩专区一区| 色综合久久天天综合观看| 国产视频一区二区在线观看| 国产网站在线| 亚洲精品影院一区二区| 免费国产在线视频| 国产网站免费观看| 欧美日本免费| 精品国产亚洲一区二区三区| 国产网站免费| 精品国产一区二区三区国产馆| 国产高清视频免费观看| 九九久久国产精品大片| 日日夜夜婷婷| 青青久久国产成人免费网站| 99久久精品国产免费| 久久精品大片| 成人在免费观看视频国产| 精品视频在线看| 日韩字幕在线| 国产麻豆精品免费视频| 91麻豆精品国产自产在线观看一区| 韩国三级视频网站| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日韩av成人| 精品视频免费在线| 国产91素人搭讪系列天堂| 一 级 黄 中国色 片| 国产一区二区精品尤物| 天天做日日干| 精品视频免费看| 午夜欧美成人久久久久久| 午夜欧美成人香蕉剧场| 日日夜夜婷婷| 91麻豆精品国产自产在线观看一区| 九九精品久久久久久久久| 你懂的国产精品|