众所知周,Vert.x是一个异步无阻塞的网络框架,其参照物是node.js。基本上node.js能干的事情,Vert.x都能干。Vert.x利用Netty4的EventLoop来做单线程的事件循环,所以跑在Vert.x上的业务不能做CPU密集型的运算,这样会导致整个线程被阻塞。

Springboot是应用非常广泛的java快速开发框架,它提供了与数据库,websocket,消息系统等等各种集成。
业务中已经使用了springboot,如果又有需要使用vert.x,最好是将这两者集成,而不是Vert.x单独作为一个程序。

如何集成Vert.x与Springboot? 非常简单,我们只需要创建一个Vert.x Server,让它在springboot启动的时候自动启动即可。

第一步, 设置Vert.x server端口,
创建一个简单的配置类,它从环境变量获取我们Vert.x Server的端口,如果环境变量没有设置,就使用默认的8081.

package com.yq.springboot;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;/*** A configuration bean.* @author <a href="http://escoffier.me">Clement Escoffier</a>*/
@Configuration
public class AppConfiguration {@AutowiredEnvironment environment;public int httpPort() {return environment.getProperty("http.port", Integer.class, 8081);}}

第二步,创建Vert.x server
我们需要创建一个简单的WebServer, 这里直接使用Vert.x自带的StaticHandler,也可以自己创建新的Handler,这里只是演示,就直接使用Vert.x自带的StaticHandler。

package com.yq.springboot;import io.vertx.core.AbstractVerticle;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.StaticHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class StaticServer extends AbstractVerticle {@AutowiredAppConfiguration configuration;@Overridepublic void start() throws Exception {Router router = Router.router(vertx);// Serve the static pagesrouter.route().handler(StaticHandler.create());vertx.createHttpServer().requestHandler(router::accept).listen(configuration.httpPort());}
}

第三步,设置静态页面
我们使用了StaticHandler,可以查看源码,发现只需要创建webroot目录,创建index.html页面即可,

@VertxGen
public interface StaticHandler extends Handler<RoutingContext> {String DEFAULT_WEB_ROOT = "webroot";boolean DEFAULT_FILES_READ_ONLY = true;long DEFAULT_MAX_AGE_SECONDS = 86400L;boolean DEFAULT_CACHING_ENABLED = true;boolean DEFAULT_DIRECTORY_LISTING = false;String DEFAULT_DIRECTORY_TEMPLATE = "vertx-web-directory.html";boolean DEFAULT_INCLUDE_HIDDEN = true;long DEFAULT_CACHE_ENTRY_TIMEOUT = 30000L;String DEFAULT_INDEX_PAGE = "/index.html";

我们在<project_path>\vertxDemo\src\main\resources\webroot下面创建index.html, 详细路径可参看这里的源代码。
index.html

<html>
<head>
</head>
<body>
<h1>Static web server. Click on some links below</h1><br>
<br>
<a href="page1.html">Static Page 1</a>
<a href="page2.html">Static Page 2</a></body>
</html>

第四步 在springboot,添加postConstruct注解
在启动类中加上,当我们启动时部署Vertx staticServer的代码。
备注:@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次

package com.yq;import com.yq.springboot.StaticServer;
import io.vertx.core.Vertx;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;import javax.annotation.PostConstruct;@SpringBootApplication
public class VertxApplication {@Autowiredprivate StaticServer staticServer;public static void main(String[] args) {SpringApplication.run(VertxApplication.class, args);}@PostConstructpublic void deployVerticle() {Vertx.vertx().deployVerticle(staticServer);}
}

启动程序后再网页打开http://127.0.0.1:8081
效果图

代码放在这里,欢迎加星。

Vert.x 与Springboot集成相关推荐

  1. Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源

    全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...

  2. SpringBoot集成FreeMarker

    给大家简单介绍一下springboot 集成FreeMarker 过程很简单,5分钟即可. 首先在项目中增添依赖spring-boot-starter-freemarker pom文件代码如下: &l ...

  3. springboot集成swagger2测试接口

    springboot集成swagger2测试接口 1.需要的依赖 2.开始编写一个swagger2 3.演示效果图片 1.需要的依赖 <dependency><groupId> ...

  4. springboot 集成logback

    springboot 集成logback 1.application.properties配置文件指定logback.xml logging.config=classpath:logback.xml ...

  5. springboot集成swagger2多模块中文配置详细步骤,解决集成mybatis或mybatis-plus无法正常使用问题

    springboot集成swagger2多模块中文配置详细步骤,解决集成mybatis或mybatis-plus无法正常使用问题 参考文章: (1)springboot集成swagger2多模块中文配 ...

  6. SpringBoot集成Quartz(解决@Autowired空指针Null问题即依赖注入的属性为null)

    SpringBoot集成Quartz(解决@Autowired空指针Null问题即依赖注入的属性为null) 参考文章: (1)SpringBoot集成Quartz(解决@Autowired空指针Nu ...

  7. SpringBoot集成全局异常处理

    2019独角兽企业重金招聘Python工程师标准>>> SpringBoot集成全局异常处理 前言 对于通常的MVC项目,大量的异常需要我们去处理,如此一来,我们的 Controll ...

  8. dubbo web工程示例_dubbo实战之二:与SpringBoot集成

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类和汇总,及配套源码,涉及Java.Docker.Kubernetes.DevO ...

  9. php 配置文件加密工具类,SpringBoot集成Jasypt安全框架以及配置文件内容加密(代码示例)...

    本篇文章给大家带来的内容是关于SpringBoot集成Jasypt安全框架以及配置文件内容加密(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我们在SpringBoot项 ...

最新文章

  1. 新书《路由器配置与管理完全手册——Cisco篇》目录抢鲜暴光
  2. php程序里如何实现图片翻页,php图片上传代码一例-php 生成翻页链接(页码)列表的...-带多种分页方式的php分页类_169IT.COM...
  3. java程序语言228_2019年Java面试题基础系列228道(5)
  4. 大数据分析优劣势有哪些
  5. keras系列︱利用fit_generator最小化显存占用比率/数据Batch化
  6. UPDATE语句更新的顺序
  7. 【产品 设计】入门 - 工具篇 - Sketch + Skala Preview
  8. 使用File I/O类实现文件的读写操作
  9. 解决相片上传主键唯一性问题,java 上传相片到服务器的时候,相片保存主键用guid。...
  10. 2021数学建模国赛b题思路总结
  11. CodeFroces gym 100781 A.Adjoin the Networks(贪心)
  12. centos8修改系统语言为中文
  13. xp系统dns服务器异常请稍后再试,xp系统网页“无法解析服务器的dns地址”的详细办法...
  14. 计算机应用基础中级,《计算机应用基础》中级测试题-针对考题实操
  15. 大一计算机专业自我总结,计算机专业大学的毕业生自我鉴定
  16. 中外对比:国内云计算平台的三大特点
  17. 将数据字典转为Excel表格
  18. Android 录音功能开发
  19. 三个短视频剪辑技巧分享,控制时长很关键,轻松剪出高质量视频
  20. EditPlus文本编辑器使用心得

热门文章

  1. luogu3645 [Apio2015]雅加达的摩天大楼 (分块+dijkstra)
  2. STM32无法停止定时器2(TIM2)的问题
  3. ScrollView 滚动视图控件
  4. 浅谈分布式存储系统Pangu2.0——它让双11运维变得智能起来
  5. K-Dimensional Foil HihoCoder - 1628 线性代数 解方程
  6. HTML——选择器总结(直观 一目了然)
  7. 一种新的无监督前景目标检测方法 A New Unsupervised Foreground Object Detection Method
  8. 微信小程序下获取公众号openId
  9. 记DMA冲突引发的血案
  10. matlab06-进阶绘图