Solon 1.2.12 发布,新的惊喜

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("http://www.likecs.com/") 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项目地址

gitee: https://gitee.com/noear/solon

github: https://github.com/noear/solon

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfxjj.html