内容简介:Solon 一个类似Springboot的微型开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,3500多次的commit;内核保持0.1m的身材,超高的Web跑分,良好的使用体验。 Solon 强调:克制 + 简洁 + 开放的原则...
Solon 一个类似Springboot的微型开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,3500多次的commit;内核保持0.1m的身材,超高的Web跑分,良好的使用体验。
Solon 强调:克制 + 简洁 + 开放的原则;力求:更小、更快、更自由的体验。
所谓更小:
内核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()));
本次版本重大变更:
1、增加插件:springboot-solon-plugin(实现与Springboot互通)
- 引入框架,约0.1m大小
<dependency>
<groupId>org.noear</groupId>
<artifactId>springboot-solon-plugin</artifactId>
<version>1.2.13</version>
</dependency>
? 如果有需要可引入Solon的其它插件,Solon适配的框架多较小巧 ?
- 嵌入Springboot系统后,同时利用两套框架的容器资源与特性;或者过度期临时混合
1) 启动应用
@SpringBootLinkSolon
@SpringBootApplication
public class DemoApp {
public static void main(String[] args) {
//先
Solon.start(DemoApp.class, args);
//后
SpringApplication.run(DemoApp.class, args);
}
}
2) 定义Springboog组件
public interface HelloService {
String hello(String name);
}
//此处为Springboot的注解(Solon 也有同名的注解)
@Component
public class HelloServiceImp implements HelloService {
@Override
public String hello(String name) {
return "hello: " + name;
}
}
3) 在Solon类里使用Springboot容器内的组件
//此处为Solon的注解(Springboot 也有同名的注解)
@Controller
public class SolonController {
//使用Solon注解,将Springboot bean注入到Solon的托管类中
@Inject
HelloService helloService;
//注入配置
@Inject("${user.name}")
String name;
@Mapping("/test")
public String home(String msg) throws Exception {
return "solon: " + helloService.hello();
}
}
4) 在Springboot类里使用Solon的手写特性
@RestController
public class Text2Controller {
HelloService helloService;
@RequestMapping("/test2")
public String home(String msg) throws Exception {
//使用Solon的手写特性赋值,进行懒加载
//
if(helloService == null){
helloService = Aop.get(HelloService.class);
}
//手动获取配置
//
String name = Solon.cfg().get("user.name");
//也可以动态增加一个请求监听
//
//Solon.global().get("/hello",(c)->c.output("Hello world!"));
return "springboot: " + helloService.hello(name);
}
}
?以上仅为演示效果设计,不一定匹配真实场景?
2、适配第三方配置与注册服务,consul 框架:consul-solon-plugin
- 此框架由社区开发者贡献,Solon的第一个社区贡献。。。非常感谢
1) 配置示例
solon.app.name=test-consul-api
solon.app.group=test
consul.host=localhost
#consul.port=8500
#consul.token=
#consul.discovery.enable=true
#consul.discovery.hostname=12.12.12:12
#consul.discovery.tags=dev
#consul.discovery.healthCheckInterval=10s
#consul.discovery.healthCheckPath=/run/check/
consul.discovery.healthDetector=jvm,cpu,memory,disk,qps,os
#consul.locator.enable=true
#consul.locator.interval=10000
#consul.config.enable=true
#consul.config.key=test
consul.config.watch=config/,gateway/
#consul.config.interval=10000
2) 使用示例
@Controller
public class HelloController {
//使用了consul的注册与发现服务
//
@NamiClient("test-consul-api:/")
HelloInterface helloInterface;
@Mapping("/hello")
public String sayHello() {
//consul的配置内容集成到Solon的配置体系,可注入,可手动获取
//
return "config:" + Solon.cfg().get("hello")+",rpc:"+helloInterface.hello0();
}
}
以上所述就是小编给大家介绍的《Solon 1.2.13 发布,开启与 Spring Boot 的互通》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 办公环境下 kubernetes 网络互通方案
- RSA加解密,Java和C#互通
- 实现HBase与Hive之间数据互通互导
- 柏贞尧:如何建设校园市场联盟?需强化互联互通
- 动态路由实现OSPF和RIP协议实现全网互连互通
- Mirth Connect 互联互通 第五章 查询发送者通道
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。