• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 超敏捷 Java 開發框架 ServcieFramework

    發表于:2012-09-13來源:Csdn作者:blogdevteam點擊數: 標簽:ServcieFrame
    ServcieFramework是一個敏捷、快速、富領域模型的Java MVC 框架,其設計理念是讓用戶真正能夠用最簡單的方式解決80%的問題。 該項目目前應用于作者公司內部的一個產品中,剛開源不久,便引起了開發者的廣泛關注與討論。為了使大家進一步了解該框架,

      ServcieFramework是一個敏捷、快速、富領域模型的Java MVC 框架,其設計理念是讓用戶真正能夠用最簡單的方式解決80%的問題。

      該項目目前應用于作者公司內部的一個產品中,剛開源不久,便引起了開發者的廣泛關注與討論。為了使大家進一步了解該框架,我們專訪了作者祝海林。

      歡迎大家推薦更多開源項目給我們,支持中國的開源項目發展,如果您和您的團隊希望展示創業理念和有趣之處,或者有朋友正在創造這樣的價值,請聯系我們,發信到blog@csdn.com即可。

      先來個自我介紹吧!

      網名 WilliamZhu,微博@PrinceCharmingJ。Java程序員,4年開發經驗,2010年懵懂來京。有過短暫幾天Rails程序員生涯,頗為自豪。曾經為了創建一個音樂新模式的嘗試而奮斗過,至今仍念念不忘?,F專注于搜索和數據挖掘領域。平常的愛好就是向大牛們提問、聆聽、學習。

      ServcieFramework 是什么?

      ServcieFramework,一個敏捷、快速、其ORM 和 Controller等設計會 surprize 你的一個 Java MVC 框架,專為移動應用后端量身定做,適用于快速搭建一個后端服務(說的好像有點拗口,oh yeah~~~)

      ServcieFramework 三大亮點:

      ORM 實現真正的充血模型,非常 ActiveRecord 化。

      非常輕量,你完全看不到servlet api,因為壓根就沒有使用Servlet規范。應用本身是一個普通的Java程序,http監聽只是其中的一個模塊。

      便于測試。模型類和controller都可以當作普通的類來進行測試。

      發起這個項目的初衷是什么?

      項目的起源是我們要用Java寫一個后臺服務,提供Web API,但覺的Spring太重,后來我們用nutz開發,但仍然覺得nutz有很多限制,比如,我們對response status比較重視??蛻舳藭鶕煌瑺顟B碼進行不同處理,nutz就顯得支持有點弱了。最后我跟老板說,給我機會,我可以寫個更輕量,更 RESTFul的。于是便在老板的支持下有了ServcieFramework。目前該項目應用在我們的搜索產品中。

      開發效率比肩Rails,如何體現?是如何實現的?

      你可以 clone ServiceFramework一份下來試試。當然從文檔也是能夠直觀看到的。待會我會舉幾個小例子。

      另外之前我也發過一篇關于ServiceFramewok的資訊,不愿意看文檔的同學也可以看看這篇簡短的資訊。

      為了充分說明開發的便捷性,我直接在這篇采訪稿中做個例子。

      建立一張表:

      [sql] view plaincopy--標簽表

      CREATE TABLE `tag` (

      `id` int(11) NOT NULL AUTO_INCREMENT,

      `name` varchar(255) DEFAULT NULL,

      `tag_synonym_id` int(11) DEFAULT NULL,

      `weight` int(11) DEFAULT NULL,

      PRIMARY KEY (`id`)

      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

      --標簽組。一個標簽可以屬于多個標簽組。一個標簽組包含多個標簽

      CREATE TABLE `tag_group` (

      `id` int(11) NOT NULL AUTO_INCREMENT,

      `name` varchar(32) DEFAULT NULL,

      PRIMARY KEY (`id`),

      UNIQUE KEY `id` (`id`)

      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

      定義兩個類:

      [java] view plaincopypublic class Tag extends Model {

      @Validate

      private final static Map $name = map(

      presence, map("message", "{}字段不能為空"),

      uniqueness, map("message", "{}字段不能重復")

      );

      @ManyToMany

      private List tag_groups = list();

      }

      public class TagGroup extends Model {

      @ManyToMany

      private List tags = list();

      }

      Ok了,模型類建立完畢。 寫一個controller:

      [java] view plaincopypublic class TagController extends ApplicationController {

      @BeforeFilter

      private final static Map $check_params = map(only, list("save"));

      @At(path = "/blog", types = POST)

      public void save() {

      if(!Tag.save(params())){

      render(HTTP_400,tag.validateResults);

      }

      render(ok());

      }

      private void check_params(){

      if(isEmpty(param("tag")))render(HTTP_400,"您至少需要傳遞一個name字段");

      }

      }

      一個簡單的例子就做完了。查詢方面提供了Arel的查詢形式。比如:

      [java] view plaincopyList orders = Order.where("status=:status",map("status",Order.Status.NEW)).joins("details").fetch();

      ServiceFramewok實現重點有三個方面:

      簡化ORM框架。在我看來,Rails 的ActiveRecord是ORM的最佳實踐。ServiceFramework的ORM基本是照著它改的。

      重新設計Controller中的 filter(interceptor)。各種before filter、around filter 可以有效簡化邏輯應用。而框架本身則努力簡化filter的使用。

      規范化項目目錄。目前大部分新的框架都是這么做到的。一開始就給你生成一個標準的項目目錄結構。ServiceFramework則進一步簡化了這個操作。

      順帶提一下目前類似Rails的Java框架可能會用到的一些技術:

      字節碼增強。比如javassist、cglib等。代表有PlayFramework。

      AOP 通過對注解等的解析,生成相應的切面文件。不過這需要特定的編譯器。代表有 Spring ROO。

      還有就是通過IDE生成根據模板生成一些文件。這個可操作性不強。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>