Solon 1.1.6 发布,发力集成

2020年10月21日

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

所谓更小:

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

所谓更快:

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

所谓更自由:

代码操控自由:

//可以容器自动
@XController
public class DemoController{
    @XInject("${db}")
    Map<String,String> db;
    
    @XInject
    UserService userService;
    
    @XMapping("/user/update")
    public void udpUser(UserModel user){
        userService.updateById(user);
    }
}

//可以按需手动
Map<String,String> db = XApp.cfg().getMap("db");
UserService userService = Aop.get(UserService.class);
XApp.global().post("/user/update", x-> userService.updateById(x.paramMap()));

框架选择自由:

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

此次版本以集成第三方框加为主,更新如下:

1、ORM框架集成

2、RPC框架集成

  • 增加扩展集成包:dubbo-solon-plugin(示例项目:solon_dubbo_sml
//接口定义
public interface HelloService {
    String sayHello(String name);
}

//Provider
@Service
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String name) {
        return "hello, " + name;
    }
}

//Consume
@XController
public class DubboConsumeDemo {
    @Reference
    HelloService helloService;

    @XMapping("/")
    public String home() {
        return helloService.sayHello("noear");
    }
}

3、Job框架集成

  • 增加扩展集成包:cron4j-solon-plugin (示例项目:solon_schedule
@Cron4j(cron5x = "*/1 * * * *", name = "job1")
public class Cron4jRun1 implements Runnable {
    @Override
    public void run() {
        System.out.println("Hello world!");
    }
}

@Cron4j(cron5x = "*/1 * * * *")
public class Cron4jTask extends Task {
    @Override
    public void execute(TaskExecutionContext context) throws RuntimeException {
        System.out.println("Hello world!");
    }
}
  • 增加扩展集成包:quartz-solon-plugin (示例项目:solon_schedule
@Quartz(cron7x = "0 0/1 * * * ? *")
public class QuartzRun1 implements Runnable {
    @Override
    public void run() {
        System.out.println("Hello world!");
    }
}

@Quartz(cron7x = "0 0/1 * * * ? *")
public class QuartzJob implements Job {
    @Override
    public void execute(JobExecutionContext ctx) throws JobExecutionException {
        System.out.println("Hello world!");
    }
}

4、RESTful client框架集成

  • 增加扩展集成包:feign-solon-plugin (接口需要些RequestLine配置)
public interface RemoteService {
    @RequestLine("GET /users/get1?name={name}")
    String getOwner(@Param(value = "name") String name);

    @RequestLine("GET /users/get2?name={name}")
    User get2(String name);
}

@XMapping("demo")
@XController
public class DemoController {
    @FeignClient(url = "http://127.0.0.1:8080", path = "/users/")
    RemoteService2 service;

    @XMapping("test")
    public String test() {
        String result = service.getOwner("scott");

        return result;
    }
}

  • 增加扩展集成包:fairy(接口默认不需要配置)
public interface UserService {
    UserModel getUser(Integer userId);
}

@XMapping("demo")
@XController
public class DemoController {

    //直接指定服务端地址
    @FairyClient("http://localhost:8080/user/")
    UserService userService;

    //使用负载
    @FairyClient("local:/user/")
    UserService userService2;

    @XMapping("test")
    public void test() {
        UserModel user = userService.getUser(12);
        System.out.println(user);

        user = userService2.getUser(23);
        System.out.println(user);
    }
}

/**
 * 定义一个负载器(可以对接发现服务)
 * */
@XBean("local")
public class RpcUpstream implements XUpstream {
    @Override
    public String getServer() {
        return "http://localhost:8080";
    }
}

5、其它一些框架集成

  • 增加扩展集成包:hasor-solon-plugin(示例项目:solon_dataway,可启动dataway项目)
展开阅读全文
20 收藏
分享
加载中
最新评论 (5)
支持一下,有空我去读读源代码
2020-10-22 09:22
0
回复
举报
这么牛逼的吗
2020-10-22 08:28
0
回复
举报
看起来非常简洁,作者🐮
2020-10-21 23:14
0
回复
举报
有意思
2020-10-21 21:28
0
回复
举报
厉害了
2020-10-21 19:19
0
回复
举报
更多评论
5 评论
20 收藏
分享
返回顶部
顶部