溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

為什么Groovy使Spring更出色

發(fā)布時(shí)間:2021-10-27 09:27:32 來源:億速云 閱讀:146 作者:柒染 欄目:編程語(yǔ)言

為什么Groovy使Spring更出色,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

Spring Framework 為 Web 和企業(yè)應(yīng)用程序提供了堅(jiān)實(shí)的基礎(chǔ)。通過支持 Groovy 等動(dòng)態(tài)語(yǔ)言,Spring 添加了一些功能,從而使應(yīng)用程序架構(gòu)更加靈活、更具動(dòng)態(tài)性。在包含 2 部分的系列文章 的***部分中,您將學(xué)習(xí)將 Groovy 集成到 Spring 應(yīng)用程序的基礎(chǔ)知識(shí)。

Spring 2.0 支持將動(dòng)態(tài)語(yǔ)言集成到基于 Spring 的應(yīng)用程序中。Spring 開箱即用地支持 Groovy、JRuby 和 BeanShell.以 Groovy、JRuby 或任何受支持的語(yǔ)言(當(dāng)然包括 Java? 語(yǔ)言)編寫的應(yīng)用程序部分可以無縫地集成到 Spring 應(yīng)用程序中。應(yīng)用程序其他部分的代碼不需要知道或關(guān)心單個(gè) Spring bean 的實(shí)現(xiàn)語(yǔ)言。

Spring 支持動(dòng)態(tài)語(yǔ)言意味著應(yīng)用程序可以獲得靈活性和動(dòng)態(tài)性,并且沒有任何附加條件。在本系列的第 1 部分中,您將看到如何將 Spring 和 Groovy 一起使用,以及這個(gè)強(qiáng)大集成如何為應(yīng)用程序增加有趣的功能。例如,您可能需要頻繁地更改小塊的業(yè)務(wù)邏輯、應(yīng)用程序發(fā)出的 e-mail 消息中包含的文本、應(yīng)用程序生成的 PDF 格式和布局等。為了進(jìn)行更改,傳統(tǒng)的應(yīng)用程序架構(gòu)可能需要完全重新部署應(yīng)用程序。Spring 支持 Groovy 之后,您可以這樣更改一個(gè)已部署的應(yīng)用程序,并使這些更改立即生效。我將討論這一功能為應(yīng)用程序所帶來的好處,以及可能引發(fā)的問題。本文中所有例子的完整的源代碼(參見 下載)都可以下載。

Spring 的動(dòng)態(tài)語(yǔ)言支持

動(dòng)態(tài)語(yǔ)言支持將 Spring 從一個(gè)以 Java 為中心的應(yīng)用程序框架改變成一個(gè)以 JVM 為中心的應(yīng)用程序框架?,F(xiàn)在,Spring 不再只是讓 Java 開發(fā)變得更容易。它還允許將以靜態(tài)和動(dòng)態(tài)語(yǔ)言編寫的代碼輕松地插入到 Spring 支持的分層架構(gòu)方法中,從而使 JVM 的開發(fā)也變得更加容易。如果您已經(jīng)熟悉 Spring,那么您會(huì)感到很舒服:可以利用 Spring 已經(jīng)提供的所有特性 — 控制反轉(zhuǎn)(IoC)和依賴項(xiàng)注入、面向方面編程(AOP)、聲明式事務(wù)劃分、Web 和數(shù)據(jù)訪問框架集成、遠(yuǎn)程調(diào)用等 — 同時(shí)又可以使用靈活動(dòng)態(tài)的語(yǔ)言,比如 Groovy.

Spring 通過 ScriptFactory 和 ScriptSource 接口支持動(dòng)態(tài)語(yǔ)言集成。ScriptFactory 接口定義用于創(chuàng)建和配置腳本 Spring bean 的機(jī)制。理論上,所有在 JVM 上運(yùn)行語(yǔ)言都受支持,因此可以選擇特定的語(yǔ)言來創(chuàng)建自己的實(shí)現(xiàn)。ScriptSource 定義 Spring 如何訪問實(shí)際的腳本源代碼;例如,通過文件系統(tǒng)或 URL.Groovy 語(yǔ)言集成通過 ScriptFactory 的 GroovyScriptFactory 實(shí)現(xiàn)得到支持。

為什么是 Groovy?

根據(jù)官方的 Groovy 站點(diǎn),Groovy 是 “用于 Java 虛擬機(jī)的一種敏捷的動(dòng)態(tài)語(yǔ)言”,它 “以 Java 的強(qiáng)大功能為基礎(chǔ),同時(shí)又包含由 Python、Ruby 和 Smalltalk 等語(yǔ)言帶來的強(qiáng)大附加功能”,例如動(dòng)態(tài)類型轉(zhuǎn)換、閉包和元編程(metaprogramming)支持(參見參考資料)。它是一種成熟的面向?qū)ο缶幊陶Z(yǔ)言,既可以用于面向?qū)ο缶幊?,又可以用作純粹的腳本語(yǔ)言。我喜歡將它看作是沒有討厭代碼,但又具有閉包和動(dòng)態(tài)語(yǔ)言中的其他特性的 Java 語(yǔ)言。

Groovy 特別適合與 Spring 的動(dòng)態(tài)語(yǔ)言支持一起使用,因?yàn)樗菍iT為 JVM 設(shè)計(jì)的,設(shè)計(jì)時(shí)充分考慮了 Java 集成,這使 Groovy 與 Java 代碼的互操作很容易。它的類 Java 語(yǔ)法對(duì)于 Java 開發(fā)人員來說也很自然。

結(jié)束語(yǔ)

您已經(jīng)看到了配置 Groovy 語(yǔ)言 bean 的一些不同的方式,以及在基于 Spring 的應(yīng)用程序中使用它們是多么容易。您可以像使用 Java 類一樣使用已編譯的 Groovy 類。您還看到了配置用腳本編寫的 Groovy 對(duì)象的一些不同的方式。應(yīng)該選擇的選項(xiàng)取決于如何在應(yīng)用程序中使用 Groovy.還可以在同一個(gè)應(yīng)用程序中結(jié)合使用已編譯的和用腳本編寫的 Groovy bean.實(shí)際上,如果希望的話,還可以在同一個(gè)應(yīng)用程序中同時(shí)使用 Java、Groovy、JRuby 和 BeanShell bean,但我不建議這樣做。作為開發(fā)人員,必須權(quán)衡在同一應(yīng)用程序中使用多種語(yǔ)言的優(yōu)點(diǎn)和缺點(diǎn)。

作為一種語(yǔ)言,Groovy 比 Java 更靈活,這使它成為很有吸引力的選擇,即使僅選擇編譯 Groovy 類也是如此。Spring 可以集成用腳本編寫的動(dòng)態(tài)語(yǔ)言 bean,這使人們更加喜歡選擇 Groovy,因?yàn)榭梢栽谟媚_本編寫的 bean 中引入附加的邏輯和靈活性。例如,正如前面看到的那樣,可以根據(jù)業(yè)務(wù)邏輯添加確定應(yīng)用程序啟動(dòng)時(shí)應(yīng)該實(shí)例化的 bean 類型的邏輯?;蛘撸梢詫⒂媚_本編寫的對(duì)象部署到 .groovy 文件中,使 Web 應(yīng)用程序的部署更加靈活。。groovy 文件位于應(yīng)用程序的 CLASSPATH 中或文件系統(tǒng)中的某個(gè)地方,而不是打包在 WAR 文件中。

到目前為止,您看到的所有東西都為 Spring 工具箱增加了靈活性和威力。但是,Spring 動(dòng)態(tài)語(yǔ)言支持中最引人注目的特性可能是在應(yīng)用程序運(yùn)行時(shí) 監(jiān)視和檢測(cè)對(duì)動(dòng)態(tài)語(yǔ)言腳本的更改,并在 Spring 應(yīng)用程序上下文中自動(dòng)重新裝載更改后的 bean.第 2 部分將深入探索這個(gè)功能。包含 bean 的靜態(tài)配置在運(yùn)行時(shí)不能更改,與之對(duì)比,這個(gè)功能提供了很大的靈活性。

關(guān)于為什么Groovy使Spring更出色問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI