play框架的基本应用

来源:互联网 发布:ppt封面 知乎 编辑:程序博客网 时间:2024/05/01 08:20

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/shtime=`date +%Y%m%d-%H%M%S`rm -rf elemental-datacenter-0.1.0-SNAPSHOTmv lib.* Jar-Backup/mv lib lib.$timemv logs/log.log logs/log.log.$timeunzip elemental-authority-0.1.0-SNAPSHOT.zipmkdir libcp 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.$timekill `cat RUNNING_PID`nohup bin/elemental-authority &
原创粉丝点击