SpringBoot Vert.x 一(整合开发环境)

Vert.x 官网

前言 Vert.x 是一个高性能的异步框架 至于为什么要与SpringBoot集成,是因为SpringBoot的很多技术包括ioc容器技术 还是很方便的,可以为我们解决很多的问题 。至于一些与SpringBoot的性能评测网上有很多资料,我这里就不贴了 。

新建 SpringBoot 项目

打开Idea new project

QQ20200131-204651@2x

选择maven 项目
QQ202001312049122x.png

Dependencies 的话 一个都先不要选
QQ202001312050382x.png

接下来 修改pom文件里的依赖 注意 不要引入 spring-boot-starter-web

<!--SpringBoot 移除tomcat 依赖-->
 
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter</artifactId>
     <exclusions>
         <exclusion>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-tomcat</artifactId>
         </exclusion>
     </exclusions>
 </dependency>

 <!--Vert.x-->
 <dependency>
     <groupId>io.vertx</groupId>
     <artifactId>vertx-core</artifactId>
     <version>${vertx.version}</version>
 </dependency>
 <dependency>
     <groupId>io.vertx</groupId>
     <artifactId>vertx-web</artifactId>
     <version>${vertx.version}</version>
 </dependency>
  

在SpringBoot启动完毕后,我们需要部署Vertx 所以需要监听SpringBoot加载完毕

@Slf4j
@SpringBootApplication
public class VertxdemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(VertxdemoApplication.class, args);
    }

    /**
     * 监听SpringBoot 启动完毕 开始部署Vertx
     *
     * @param event
     */
    @EventListener
    public void deployVertx(ApplicationReadyEvent event) {
        VerticleMain verticleMain = new VerticleMain();
        Vertx vertx = Vertx.vertx();
        //部署vertx
        vertx.deployVerticle(verticleMain, handler -> {
            log.info("vertx deploy state [{}]", handler.succeeded());
        });
    }
}

VerticleMain 可以重写部分Vertx部署时调用的方法,比如说在Vertx启动的时候 添加api接口handler处理

@Slf4j
public class VerticleMain extends AbstractVerticle {


    @Override
    public void start() throws Exception {
        super.start();
        //路由
        Router router = Router.router(vertx);
        //编写一个get方法 并且输出 "success" 字符串
        router.get("/api/get").handler(handler -> {
            handler.response().end("success");
        });

        //start listen port
        HttpServer server = vertx.createHttpServer();
        server.requestHandler(router).listen(8888, handler -> {
            log.info("vertx run prot : [{}] run state : [{}]", 8888, handler.succeeded());
        });
    }
}

到此 一个最简单的get接口 已经实现完毕 接下来打开浏览器尝试访问

QQ20200131-210944@2x

Github 源码