最近嘗試用scala來寫spring應用。工程是經過ant來編譯部署的,由於經過eclipse直接部署到tomcat的話,scala文件不會被編譯。後來才發現Spring已經有一個在開發中的項目 Spring Scala。後面有時間會嘗試使用一下 java
環境及工具:eclipse4.2,eclipse scala-2.10插件,spring3.1.2.RELEASE,tomcat7 node
deplib: 存放scala 的相關jar包,在ant編譯scala文件的時候會用到。 git
dist: ant 打包生成的目標目錄 github
lib:spring web工程相關jar web
src/main/webapp:web工程的webapp目錄,存放 web.xml 頁面等等 spring
ant的相關配置須要添加對scala編譯的支持,能夠參考 http://www.scala-lang.org/node/98 官網給的相關說明。 tomcat
1. 添加scala編譯的ant tool app
<taskdef resource="scala/tools/ant/antlib.xml"> <classpath> <pathelement location="deplib/scala-compiler.jar" /> <pathelement location="deplib/scala-library.jar" /> <pathelement location="deplib/scala-reflect.jar" /> </classpath> </taskdef>2. 在編譯的時候優先編譯 scala文件,由於好比若是你的代碼中混用java和scala的話,在java去集成scala定義的接口的時候,不先編譯出scala的trail,先編譯java的話,會報錯。
<target name="compile" depends="clean,mkdir"> <scalac srcdir="${java.src.dir}" destdir="${class.dir}" > <compilerarg line="-encoding UTF-8 " /> <classpath refid="classpath" /> </scalac> <javac srcdir="${java.src.dir}" destdir="${class.dir}" target="1.6" source="1.6" debug="on"> <compilerarg line="-encoding UTF-8 " /> <classpath refid="classpath" /> </javac> </target>3. 打包的時候,將 scala-library.jar 文件也放入到 WEB-INF/lib 下面。否則會有找不到class的錯誤。
這樣打包之後,就放到tomcat裏面直接跑就能夠了。不過這樣不知道怎麼去支持熱部署 ,有知道的朋友望告知一下。不過jrebel對scala是免費的,這個還沒去研究怎麼整合進來。 eclipse
package me.ours.controllers import org.springframework.stereotype.Controller import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.servlet.ModelAndView @Controller class IndexController { @RequestMapping(Array { "/" }) def index(): String = "index" @RequestMapping(Array {"/test"}) def test(): ModelAndView ={ return new ModelAndView("index","message","Scala!!") } }上面是用scala寫的一個spring的controller。若是有人須要工程的話,我能夠分享出來。