Solon 1.2.12 发布,新的惊喜

栏目: 软件资讯 · 发布时间: 5年前

内容简介:Solon 一个类似Springboot的微型开发框架。强调:克制 + 简洁 + 开放的原则。力求:更小、更快、更自由的体验。 所谓更小: 内核0.1m,最小Web开发单位0.2m(相比Springboot项目包,小到可以乎略不计了) 所谓更快...

Solon 一个类似Springboot的微型开发框架。强调:克制 + 简洁 + 开放的原则。力求:更小、更快、更自由的体验。

所谓更小:

内核0.1m,最小Web开发单位0.2m(相比Springboot项目包,小到可以乎略不计了)

所谓更快:

本机helloworld测试,Qps可达12万之多。可参考:《helloworld_wrk_test

所谓更自由:

  • 代码操控自由:
// 除了注入模式之外,还可以按需手动
//
//手动获取配置
Map<String,String> db = Solon.cfg().getMap("db");
//手动获取容器里的Bean
UserService userService = Aop.get(UserService.class);
//手动监听http post请求
Solon.global().post("/user/update", x-> userService.updateById(x.paramMap()));
  • 框架选择自由:

可以用solon-web这样的快速开发集成包。也可以按项目需要选择不同的插件组装,比如:为非Solon项目添加solon.boot.jlhttp,0.1m即可让项目实现http+mvc支持;还可以用MVC开发Socket应用。

也可以用快餐方案:solon-web 这个组合包。

本次版本重大变更:

1、增加代码亲和度,降低学习成本;去掉各种类的X前缀

  • 新的Helloworld效果
@Controller
public class App{
    public static void main(String[] args){
        Solon.start(App.class, args);
    }
  
    @Mapping("/")
    public Object home(Context c){
        return "Hello world!";  
    }
}

2、增加 BeanWrap 语义特性支持

  • 通过语义特性,为Bean增加元信息描述
//
// 这是一个数据主从库的示例
//
@Configuration
public class Config {
    //申明 db2 是 db1 为的从库
    @Bean(value = "db1", attrs = { "slaves=db2" })
    public DataSource db1(@Inject("${test.db1}") HikariDataSource dataSource) {
        return dataSource;
    }

    @Bean("db2")
    public DataSource db2(@Inject("${test.db2}") HikariDataSource dataSource) {
        return dataSource;
    }
}

3、发布新组件:SockeD,为服务开发而生的Socket框架。

  • 支持MVC+RPC开发模式
//[服务端]
@Mapping(value = "/demoe/rpc", method = MethodType.SOCKET)
@Component(remoting = true)
public class HelloRpcServiceImpl implements HelloRpcService {
    public String hello(String name) {
        return "name=" + name;
    }
}

//[客户端] 
var rpc = SocketD.create("tcp://localhost:28080", HelloRpcService.class);
System.out.println("RPC result: " + rpc.hello("noear"));
  • 支持单链接双向RPC开发模式(基于上例扩展)
//[服务端]
@Mapping(value = "/demoe/rpc", method = MethodType.SOCKET)
@Component(remoting = true)
public class HelloRpcServiceImpl implements HelloRpcService {
    public String hello(String name) {
        //
        //[服务端] 调用 [客户端] 的 rpc,从而形成单链接双向RPC
        //
        NameRpcService rpc = SocketD.create(Context.current(), NameRpcService.class);
        name = rpc.name(name);
        
        
        return "name=" + name;
    }
}
  • 支持消息发送+监听开发模式
//[服务端]
@ServerEndpoint
public class ServerListener implements Listener {
    @Override
    public void onMessage(Session session, Message message) {
        if(message.flag() == MessageFlag.heartbeat){
            System.out.println("服务端:我收到心跳");
        }else {
            System.out.println("服务端:我收到:" + message);
            //session.send(Message.wrapResponse(message, "我收到了"));
        }
    }
}

//[客户端]
var session = SocketD.createSession("tcp://localhost:28080");
session.send("noear");
//session.sendAndCallback("noear", (rst)->{});   //发送并异常回调
//var rst = session.sendAndResponse("noear");   //发送并等待响应

System.out.println(rst);
  • 支持消息订阅开发模式
//[客户端]
@ClientEndpoint(uri = "tcp://localhost:28080")
public class ClientListener implements Listener {
    @Override
    public void onMessage(Session session, Message message) {
        //之后,就等着收消息
        System.out.println("客户端2:我收到了:" + message);
    }
}

以上所述就是小编给大家介绍的《Solon 1.2.12 发布,新的惊喜》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

一胜九败

一胜九败

柳井正 / 徐静波 / 中信出版社 / 2011-1-19 / 28.00元

优衣库成长的过程,就是一个历经了无数次失败的过程。他们经历过无法从银行融资的焦灼,经历过“衣服因低价热销,但人们买回去之后立即把商标剪掉”的难堪,经历过为上市冲刺而拼命扩张店铺的疯狂,也经历过被消费者冷落、疏离的苦痛……但正是从这些失败中学到的经验与教训,让柳井正走向了成功。 《一胜九败:优衣库风靡全球的秘密》就像是柳井正的错误集,在这里,他毫不隐晦地将公司业绩低迷的原因、进军海外失败的因素......一起来看看 《一胜九败》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具