Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Java MVC framework, agile, fast, rich domain model, made especially for server side of mobile application (一个敏捷,快速,富领域模型的Java MVC 框架,专为 移动应用后端量身定做)

Notifications You must be signed in to change notification settings

flyyoung/ServiceFramework

Repository files navigation

ServiceFramework Wiki

README-EN

logo

ServcieFramework 定位在 移动互联网后端 领域,强调开发的高效性,其开发效率可以比肩Rails.

  1. ActiveRecord化的Model层,支持 MongoDB 和 MySQL.

     List<Tag> tags = Tag.where(map("name","java")).fetch;
    
  2. 完全重新设计的Controller层,支持方法级过滤器,大量便利的函数

  3. 大部分对象使用IOC自动管理,使用简单。

     	 @inject
     	 Service service;
    
  4. 不依赖容器,单元测试简单,从action到service,都可做到测试代码最少

     @Test
     public void search() throws Exception {
     RestResponse response = get("/doc/blog/search", map(
     "tagNames", "_10,_9"
     ));
     Assert.assertTrue(response.status() == 200);
     Page page = (Page) response.originContent();
     Assert.assertTrue(page.getResult().size() > 0);
     }
    
  5. Thrift 和 RESTFul 只需简单配置即可同时提供 Thrift 和 RESTFul 接口

     ###############http config##################
     http:
     port: 7700
     disable: false
     thrift:
     disable: false
     services:
     net_csdn_controller_thrift_impl_CLoadServiceImpl:
     port: 7701
     min_threads: 100
     max_threads: 1000		 
     servers:
     load: ["127.0.0.1:7701"]
    
  6. 支持 Velocity, 页面可直接访问所有实例变量以及helper类的方法

     	 @At(path = "/hello", types = GET)
     	 public void hello() {
     	 render(200, map(
     	 "name", "ServiceFramework"
     	 ), ViewType.html);
     	 } 
    

QuickStart

Step 1 > 克隆项目

git clone https://github.com/allwefantasy/ServiceFramework

Step 2 > 导入到IDE.

Step 3 > 根据你自己的数据库信息 编辑修改 config/application.yaml .注意如果你使用mysql,需要disable 调 mongodb.反之亦然

datasources:
 mysql:
 host: 127.0.0.1
 port: 3306
 database: wow
 username: root
 password: root
 disable: false
 mongodb:
 host: 127.0.0.1
 port: 27017
 database: wow
 disable: false
 redis:
 host: 127.0.0.1
 port: 6379
 disable: true 		 

Step4 > 在Mysql中导入 sql/wow.sql.

Step5 > 新建 com.example.model.Tag 类.

		public class Tag extends Model 
		{
		
		}

Step6 > 新建 com.example.controller.http.TagController

 public class TagController extends ApplicationController 
		{
		 @At(path = "/hello", types = RestRequest.Method.GET)
		 public void hello() {
		 Tag tag = Tag.create(map("name", "java"));
		 tag.save();
		 render(200, map(
		 "tag", tag
		 ), ViewType.html);
		 }
		}

Step7 > 新建 template/tag/hello.vm

		Hello $tag.name! Hello world!		

Step8 > 创建启动类

public class ExampleApplication {
public static void main(String[] args) {
 ServiceFramwork.scanService.setLoader(ExampleApplication.class);
 Application.main(args);
}
}

Step9 > 运行 ExampleApplication

Step10 > 浏览器中输入 http://127.0.0.1:9002/hello .同时查看数据库,你会发现tag表已经有数据了。

Step11 > 写个Action单元测试 编辑 runner.DynamicSuite 在 initEnv方法第一行处添加

 ServiceFramwork.scanService.setLoader(ExampleApplication.class);

Step12 > 创建测试类 test.com.example.TagControllerTest

public class TagControllerTest extends BaseControllerTest {
 @Test
 public void testHello() throws Exception {
 Tag.deleteAll();
 RestResponse response = get("/hello", map());
 Assert.assertTrue(response.status() == 200);
 String result = response.content();
 Assert.assertEquals("Hello java! Hello world!", result);
 }
}

Step13 > 运行 DynamicSuiteRunner 跑起测试

QuickStart 的一些常见错误:

  1. application 文件 数据连接配置错误。你可以将test,development环境下的连接配置弄成相同的

  2. 包名和类名必须保证和示例一致。如果你需要使用不同的package,那么你需要修改application.yml中的application 配置。如下:

     application:
     controller: com.example.controller.http
     model: com.example.model
     document: com.example.document
     service: com.example.service
     util: com.example.util
     test: test.com.example
    

Model层基于如下开源项目:

ServiceFramework 不适合遗留项目。我们倾向于在一个全新的项目中使用它。

Doc Links

Step by Step tutorial

Step-by-Step-tutorial-for-ServiceFramework(continue...)

Some projects based on ServiceFramework

About

Java MVC framework, agile, fast, rich domain model, made especially for server side of mobile application (一个敏捷,快速,富领域模型的Java MVC 框架,专为 移动应用后端量身定做)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /