jBoot小总

jboot是一个基于jfinal、undertow开发的一个类似springboot的开源框架, 我们已经在正式的商业上线项目中使用。她集成了代码生成,微服务,MQ,RPC,监控等功能, 开发者使用及其简单。

一,和mvc交互

step1:Maven依赖

  1. <dependency>
  2.     <groupId>io.jboot</groupId>
  3.     <artifactId>jboot</artifactId>
  4.     <version>1.0</version>
  5. </dependency>
step2:new a controller(spring MVC)

@RequestMapping("/")
public class MyController extend JbootController{
   public void index(){
        renderText("hello jboot");
   }
}
step 3:启动( 访问 http://127.0.0.1:8088,然后你就能看到浏览器输出:hello jboot.

public class MyStarter{
   public static void main(String [] args){
       Jboot.run(args);
   }
}
二,数据库交互

step 1:表结构


step 2:jboot.properties


step3:定义一个service接口

public interface HelloService {
    public String hello(String name);
}
step4:serviceimpl来实现这个接口

@JbootrpcService
public class myHelloServiceImpl  implements HelloService {
    public String hello(String name){
         System.out.println("hello" + name);
         return "hello ok";
    }
}
step5:服务器传参数回调或者在controller中操作

 HelloService service = Jboot.service(HelloService.class);
 service.hello("michael");
public class MyController extends bootController{

    @JbootrpcService
    HelloService service ;

    public void index(){

        renderText("hello " + service.hello());
    }

}
step 6:还可以进行如下操作

@RequestMapping("/")
public class MyController extend JbootController{   
    public void index(){
        List<Record> records = Db.find("select * from `user`");
        setAttr("users",records);
        render("index.html");
    }



 public static void main(String [] args){       
         Jboot.run(args);
   }
}

step7:因为我们用到了html,所以我们要在resource下面建一个html来对接

<html >
<head>
    <meta charset="UTF-8">
    <title>users</title>
</head>
<body>
#for(user : users)
   #(user.login_name)<br />
#end

</body>

</html>

三,下面来说说微服务到底是个啥?

微服务是什么呢?在大型的系统里面,比如京东。实际上有很多个“项目”组成的,每个“项目”都可以理解为一个服务,把大型的项目拆分成多个微小的服务就是微服务了。

 

微服务有什么好处呢?大家可以试想一下,如果我们把所有的功能都写在一个“项目”里面,如果说其中一个小模块除了点问题,我们重新升级这个小模块,那就需要我们对整个项目重新部署,这个过程中可能就会中断服务。

 

比如说,京东的快递查询模块出现问题了,不肯能因为升级而重启整个京东网站。

 

这个时候就只能把每个模块都做成一个“项目”或者叫“服务”。

 

但是这个时候,京东网想要去读取这个“项目”的数据,怎么办呢?我们可以让这个项目提供一个api接口,然后让需要这个数据的项目去调用这个接口。

 

但是,这样还是很麻烦。

 

在众多的项目中,都使用到了一种技术,叫RPC,也就是remote procedure call的简写。翻译过来叫远程过程调用,再简单点就理解为“远程调用”好了,

也就是我们在我们的项目里,只要调用 xxx.aaa() 这样,就调用到了远程服务器的 aaa() 方法了。

 

RPC的开源框架,市面上有很多,比如google的grpc,tiwtter的thirft,淘宝的dubbo,新浪的motan。

 

Jboot集成了 grpc、thirft和motan(为什么不要dubbo呢?因为好几年没维护了),所以在jboot中使用rpc,极致、简单、爽!

 

step 1:首先需要我们定义个接口,接口中不要有任何的实现。代码如下:

pubic interface helloService{

public  String  hello(String name);

}

step 2:让后在我们的项目a中定义自己的类来实现这个接口,一般都叫做service类

@JbootrpcService

Public class myHelloServiceImpl implements helloService{

public  String  hello(String name){

system.out.println("hello"+name);return "hello ok";

};

}

step 3:然后在我们的另外一个项目 b中代码如下:

public class MyController extends bootController{
    @JbootrpcService
    HelloService service ;
    public void index(){
       
renderText("hello " +service.hello());
    }
}

总结:定义个HelloService接口,也是用@JbootrpcService注解,就可以爽快在在项目B中调用项目A的接口了

当然还需要给jboot做一个简单的配置

jboot.rpc.type=motan

jboot.rpc.registryTpye=consul

jboot.rpc.registryAddress=120.0.0.1:8500

下载到本地计算机,然后执行命令

consul -agent dev

注意:consul下载地址:http://consul.io

实际上、Jboot一样支持类型spring的ioc和aop,支持了众多的mq(activeMQ、rabbitMQ,阿里云商业MQ等等)和 良好的缓存机制、事件机制等等等等。


Jboot 开源地址:https://git.oschina.net/fuhai/jboot









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值