?
This document uses PHP Chinese website manual Release
這個小應(yīng)用案例使用Spring 2.0引入的動態(tài)語言支持來實(shí)現(xiàn)Spring MVC控制器。
這個Web應(yīng)用程序很簡單,因?yàn)槠淠康闹皇前鸦镜膭討B(tài)語言支持運(yùn)用于Spring MVC中,沒別的東西了。
應(yīng)用程序中有一個Groovy文件。名字是'FortuneController.groovy',放在'war/WEB-INF/groovy'文件夾中。 'war/WEB-INF/fortune-servlet.xml'這個Spring MVC配置文件的 'fortune' bean會引用該Groovy腳本文件。
通過<lang:groovy/>元素的'refresh-check-delay'屬性,'fortune' bean被設(shè)置為refreshable bean。(校對時注意去掉本括號,動態(tài)語言章節(jié)中refreshable未翻譯,故此處對該句做了相應(yīng)調(diào)整。) 該屬性設(shè)置為'3000'也就是說對'FortuneController.groovy'會在3秒鐘延時后生效。
如果是把應(yīng)用程序部署到Tomcat(打個比方),那你可以進(jìn)入'/WEB-INF/groovy'文件夾,直接編輯'FortuneController.groovy'文件。 任何改變都會自動生效,'fortune' bean將被重新配置……完全無需停止、重新部署并重啟應(yīng)用程序。親自嘗試一下吧…… 毫無疑問'FortuneController.groovy'文件里并沒有什么很復(fù)雜的邏輯(這是件好事,因?yàn)镾pring MVC中的控制器本來就該盡可能地簡單一些)。
你可以試著返回一個默認(rèn)的Fortune而不是將它代理給注入的FortuneService,或者也可以返回一個不同的邏輯視圖名, 如果想更進(jìn)一步的話,還可以自己創(chuàng)建一個實(shí)現(xiàn)了FortuneService接口的Groovy實(shí)現(xiàn),并將它插入Web應(yīng)用程序中。 也許你自定義的Groovy FortuneService可以訪問Web服務(wù)來獲得某些Fortune,亦或者應(yīng)用一些不同的隨機(jī)邏輯來返回Fortune,隨便怎么樣都行。 關(guān)鍵是在做這些變更時無需重新部署應(yīng)用程序。這在做快速原型開發(fā)時簡直太棒了。
samples/showcases/dynamvc目錄包含了web-app的源代碼。部署時需要用Apache Ant進(jìn)行構(gòu)建。 唯一的要求是JDK >=1.4(Groovy要求JDK至少要是1.4的)Ant >=1.5。
在該目錄中運(yùn)行“build.bat”,帶上某個目標(biāo)(例如"build.bat build","build.bat warfile")。 請注意,用這種方式啟動Ant你需要在classpath中存在一個XML解析器(例如放在"%JAVA_HOME%/jre/lib/ext"中;包含在JDK 1.4中)。 可以用“warfile.bat”來生成WAR文件。WAR文件會被建在"dist"目錄中。