Jboot入门教程

Java大联盟2019-03-01 15:31:46



Java大联盟

致力于最高效的Java学习



Jboot是一个基于JFinal和Undertow开发的微服务框架。提供了AOP、RPC、分布式缓存、限流、降级、熔断、统一配置中心、swagger api自动生成、Opentracing数据追踪、metric数据监控、分布式session、代码生成器、shiro安全控制等功能。


Jboot是一个类似SpringCloud的开源框架, 已经广泛使用于正式的商业上线项目。Jboot集成了代码生成,微服务,MQ,RPC,监控等功能,开发者使用起来非常简单。


什么是微服务

大型的电商系统,如京东淘宝,实际上是由很多个子项目组成的,每个子项目都可以理解为一个服务,由这些子项目服务协同合作,完成整个系统的业务需求,把大型的项目拆分成多个微小的服务就是微服务。

微服务的优点

如果没有微服务架构,所有的功能都集成在大系统中,假如其中一个小模块出了问题,需要进行优化,那就需要重新部署整个项目,这个过程中可能就会中断服务。

比如淘宝的订单查询模块出现问题了,不可能因为升级而重启整个淘宝网站。

如果淘宝想要去读取子项目的数据,怎么办呢?我们可以让这个子项目提供一个API,然后让需要这个数据的项目去调用,这种方式还是比较麻烦,在项目架构中,会使用一种叫RPC(Remote Procedure Call)的技术,翻译过来就是远程调用的意思。

也就是说我们的项目里,只要调用类似server.function(),就调用到了远程服务器的function()方法了。

RPC的开源框架有很多,比如google的grpc,tiwtter的thirft,阿里的dubbo,新浪的motan。

Jboot集成了 grpc、thirft和motan,所以在Jboot中使用rpc是非常简单快速的,可以大大提升我们的开发效率。

Jboot是一个非常实用的开源框架,在Gitee被评为最有价值的开源项目,有图有真相。


Jboot的作者杨福海先生现任某互联网公司CTO,开源爱好者,热衷于技术分享。


中国第一个Android快速开发开源框架Afinal作者,Afinal获得开源中国最受欢迎的开源软件,目前有上万的开发者和公司在使用Afinal进行快速开发。


JPress开源软件作者,JPress是一个WordPress的java代替版,JPress具有极轻、极快、灵活等特点,基于LGPL开源协议,是国内为数不多的优秀的JAVA开源软件。


其最新开源框架Jboot在开源中国社区被评为"最受欢迎的开源中国软件"。


在此非常感谢福海兄对本文的大力支持。


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


接下来带领大家快速入门Jboot。


1.新建一个maven项目,这里就不多加描述了。


2.pom.xml添加Jboot依赖。


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

 <modelVersion>4.0.0</modelVersion>
 <groupId>com.southwind</groupId>
 <artifactId>JbootDemo</artifactId>
 <packaging>war</packaging>
 <version>0.0.1-SNAPSHOT</version>
 <name>JbootDemo Maven Webapp</name>
 <url>http://maven.apache.org</url>
 <dependencies>

   <dependency>
       <groupId>io.jboot</groupId>
       <artifactId>jboot</artifactId>
       <version>1.4.8</version>
   </dependency>

 </dependencies>
 <build>
   <finalName>JbootDemo</finalName>
 </build>
</project>


3.编写Controller。

package com.southwind.jboot;

import io.jboot.Jboot;
import io.jboot.web.controller.JbootController;
import io.jboot.web.controller.annotation.RequestMapping;

@RequestMapping("/")
public class HelloWorld extends JbootController{
   public static void main(String[] args) {
       Jboot.run(args);
   }

   public void demo() {
       renderText("hello demo");
   }

   public void index() {
       renderText("hello index");
   }
}


4.直接运行主方法,控制台打印信息如下:



server started success说明服务已经起来了。


5.在浏览器中输入127.0.0.1:8080,此时浏览器显示:hello world。



在上面的代码中继承了JbootController类,而到代码的底层,它又继承了Controller类:



Controller:

Controller是JFinal核心类之一,该类作为MVC模式中的控制器。基于JFinal的Web应用的控制器需要继承该类。Controller是定义Action方法的地点,是组织Action的一种方式,一个Controller可以包含多个Action。Controller是线程安全的。


JbootController:

JbootController是扩展了Jfinal Controller,在Jboot应用中,所有的控制器都应该继承JbootController。


这里介绍一些JbootController的方法:


方法调用

返回类型

描述

isMoblieBrowser()

boolean

是否是手机浏览器。

isWechatBrowser()

boolean

是否是微信浏览器。

isIEBrowser()

boolean

是否是IE浏览器,低级的IE浏览器在ajax请求的时候,返回json要做特殊处理。

isAjaxRequest()

boolean

是否是ajax请求。

isMultipartRequest()

boolean

是否是带有文件上传功能的请求。

getReferer()

String

获取来源网址器。

getIPAddress()

String

获取用户的IP地址,这个决定于浏览器,同时做nginx等转发的时候要做好配置。

getUserAgent()

String

获取http头的useragent。

getBaseUrl()

String

获取当前域名。

getUploadFilesMap()

HashMap

获取当前上传的所有文件。


在这里用第一个方法为例做一个测试:

 


在手机浏览器中打开是hello world:



在电脑打开是hello jboot:



Action:


在Controller之中定义的public方法称为Action。Action是请求的最小单位。Action方法必须在Controller中定义,且必须是public可见性。


每个Action对应一个URL地址的映射:



以上代码定义了两个Action,分别是Helloworld.demo()和Helloworld.index()可以直接通过localhost:8080/demo和localhost:8080/index进行访问。



源码:


github

https://github.com/southwind9801/JbootDemo.git







【框架合集】SpringMVC教程汇总


【框架合集】Hibernate教程汇总


【框架合集】MyBatis教程汇总


【框架合集】Spring教程汇总


【框架整合】SSM教程


【框架整合】SSH教程


【福利大派送】


专业 热爱 专注

致力于最高效的Java学习

Java大联盟