用Scala 開發 Spring MVC

      最近嘗試用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 的相關配置:

     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。若是有人須要工程的話,我能夠分享出來。
相關文章
相關標籤/搜索