互联网框架sumk

SUMK是本来开发的一款互联网框架。目标是为大家提供一款易开发、高性能的框架。减轻广大码农的工作量。项目地址是:https://www.oschina.net/p/sumk

主要模块如下(除此之外还有很多小功能):

  • IOC:@Web对类进行注解,@Inject进行注入。支持数组、集合等
  • ORM:跟redis缓存的原生集合,有效保护数据库rpc
  • 事务:使用@Box进行事务声明。支持多数据源,支持读写分离
  • HTTP:只要在一个方法上使用@Web注解,就能提供http访问功能,内置加密、签名等功能。使用@Param可以对参数进行简单的校验
  • RPC: 只要在一个方法上使用@Soa注解,就能提供rpc访问功能
 //数据库事务及ORM的例子   
    @Box  //@Box表示启用sumkDB的事务管理,类似于spring的@Transaction。通过dbName可以设置不同的数据源
    public void test() {
        DemoUser user = new DemoUser();
        user.setAge(30);
        user.setName("张三");
        user.setLastUpdate(new Date());

        DB.insert(user).execute(); //插入对象

        //多条件查询
        List list=DB.select().tableClass(DemoUser.class)
                .lessThan("lastupdate", new Date())
                .orderByAsc("lastupdate")
                .offset(10)
                .limit(10)
                .resultHandler(MapResultHandler.handler)
                .queryList();

        // RawDB使用的是原生的sql,后面跟的是要注入的参数。参数个数与sql中的?的个数一致
        RawDB.list("select * from demouser where name=? and age=?", "登陆",12);

        //NamedDB类似于mybatis,目前只支持#{}方式,不支持等标签。
        NamedDB.count("select count(1) from demouser where name=#{name}", SBuilder.map("name", "登陆").toMap());

    }
//RPC的例子

//服务器端:
@Soa //只需要这个注解,就能接收RPC请求,默认接口名是 appId.小写的类名.小写的方法名
public List echo(String echo,List names){
    List list=new ArrayList();
    for(String name:names){
        list.add(echo+" "+name);
    }
    return list;
}

//客户端调用:
Rpc.init(); //或者在app.properties里配置soa.client.start=1

List names=Arrays.asList("游夏","游侠");
String echo=",how are you";
//返回是json格式。接口名的格式是包名的最后一个单词+类名+方法名
String result=Rpc.call("demo.EchoAction.echo", echo,names);
//http的例子
   @Web   //只需要这个注解就表示可以接受http请求
    public List echo(String echo,List names){
        List list=new ArrayList();
        for(String name:names){
            list.add(echo+" "+name);
        }
        return list;
    }

目前的架构图如下,sumk的功能还在丰富中,以后的功能会越来越多:

 

猜你喜欢

转载自youtl.iteye.com/blog/2361921