play框架的基本应用

play框架的基本应用#1. 概述
目前kmdm项目中有java写的rest服务,今后不再扩展,将迁移到elemental中scala的play服务。

目前我觉得play框架有以下优点

1. 省代码:scala天然的便利性
2. 容易测试:测试用例很容易写
3. 容易部署: 热部署

2. 使用

2.1 配置文件

/conf/routes应用入口路由文件,所有的HTTP请求将通过该文件转发到指定的Scala对象处理。
/conf/application.conf 应用配置文件。

2.2 Filter

/app/Filter 用户认证、记录日志等过滤操作

2.3 控制层

/app/…/..controller 接收/conf/routes中的action请求,g并根据业务返回结果
2.4 启动项
/app/…/..server 可以debug启动,run启动需要删掉RUNNING_PID

2.5 测试用例

play框架测试用例非常简便,有三四行代码就可以完成一个简单的测试用例

class TestControllerSpec extends AbstractSpec {
  "testController" should {
    "POST /testPlus/2" in {
      val request = FakeRequest(method = "POST", path = "/testPlus/2").withHeaders(("Accept", "*/*")).withFormUrlEncodedBody(("b", "3"))
      implicit val timeout = Timeout(30, TimeUnit.SECONDS)
      val resp = contentAsString(route(app, request).get)(timeout)
      println(resp)
      Json.parse(resp).as[JsObject].value.get("rst").get.as[Int] mustBe 5
    }
  }

2.6 部署

sbt projectName/dist 项目在/target/universal中,为zip格式
上传到服务器,参考z022.kmtongji.com/home/kmop/kmdm/elemental下的deloy.sh 和restart.sh重写脚本即可

deloy.sh

#!/bin/sh

time=`date +%Y%m%d-%H%M%S`
rm -rf elemental-datacenter-0.1.0-SNAPSHOT
mv lib.* Jar-Backup/
mv lib lib.$time
mv logs/log.log logs/log.log.$time

unzip elemental-authority-0.1.0-SNAPSHOT.zip
mkdir lib
cp elemental-authority-0.1.0-SNAPSHOT/lib/* lib/
cp elemental-authority-0.1.0-SNAPSHOT/conf/routes conf/
cp elemental-authority-0.1.0-SNAPSHOT/bin/* ./bin/

sh restart.sh

restart.sh

#!/bin/sh
#time=`date +%Y%m%d-%H%M%S`
#mv logs/log.log logs/log.log.$time

kill `cat RUNNING_PID`
nohup bin/elemental-authority &
阅读更多
文章标签: play scala
个人分类: scala
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭