vert.x框架-使用spring注解功能
1.前言
习惯了spring注解风格,方便好用,现在用vert.x框架,怎么使用spring注解呢?
2.maven安装依赖包
<!--spring注解依赖包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
3.注册bean有两个方法:xml注册,注解注册
方法1:xml注册
新建一个xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 默认单例,,加上scope="prototype"为多例-->
<bean name="eatService" class="xue.myVertX.service.serviceImpl.EatServiceImpl" scope="prototype"/> </beans>
spring-context.xml
接口和他的实现类在springMVC里该怎么写还是怎么写,不变,这里旧省略了
使用方法:
package xue.myVertX; import io.vertx.core.AbstractVerticle;
import io.vertx.core.Vertx;
import io.vertx.core.http.HttpMethod;
import io.vertx.core.http.HttpServer;
import io.vertx.ext.web.Router;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import xue.myVertX.likeController.IndexHandle;
import xue.myVertX.service.serviceImpl.EatServiceImpl; /**
* 简单的路由使用
*/
public class SimpleRouter extends AbstractVerticle {
@Override
public void start() throws Exception {
//读取bean配置文件,注册所有bean,获取上下文对象
//方法1:
//xml文件手动注册bean方法
ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml"); // 创建HttpServer
HttpServer server = vertx.createHttpServer();
// 创建路由对象
Router router = Router.router(vertx); // 监听/index地址 ,就像spring注解@RequestMapping注册虚拟路径,然后调用controller方法
router.route("/index").handler(new IndexHandle(context)); // 把请求交给路由处理--------------------(1)
//旧版写法
server.requestHandler(router::accept);
//新版写法,需要版本在4以上才可以
// server.requestHandler(router);
server.listen(8080);
} public static void main(String[] args) {
Vertx.vertx().deployVerticle(new SimpleRouter());
}
}
package xue.myVertX.likeController; import io.vertx.core.Handler;
import io.vertx.ext.web.RoutingContext;
import org.springframework.context.ApplicationContext;
import xue.myVertX.service.EatService;
import xue.myVertX.service.serviceImpl.EatServiceImpl; /**
* 这个类就像spring注解controller,
*/
public class IndexHandle implements Handler<RoutingContext> {
private EatService eatService;
public IndexHandle(final ApplicationContext context) {
//读取全局bean配置文件,实例bean对象
//方法1,配合xml手动注册,可不写注解
eatService = (EatService) context.getBean("eatService"); } @Override
public void handle(RoutingContext routingContext) {
// //获取参数,其实就是类似于request
// String user = routingContext.request().getParam("user");
// String pass = routingContext.request().getParam("pass");
// routingContext.response()
// .putHeader("Content-type", "text/html;charset=utf-8")
// .end("接收到的用户名为:" + user + " 接收到的密码为:" + pass);
//
//
String str =eatService.eatApply();
System.out.println("可以吃啥?"+str);
routingContext.response().putHeader("Content-type", "text/html;charset=utf-8").end(str);
}
}
方法2:注解注册
在实现类添加注解

使用方法
package xue.myVertX; import io.vertx.core.AbstractVerticle;
import io.vertx.core.Vertx;
import io.vertx.core.http.HttpMethod;
import io.vertx.core.http.HttpServer;
import io.vertx.ext.web.Router;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import xue.myVertX.likeController.IndexHandle;
import xue.myVertX.service.serviceImpl.EatServiceImpl; /**
* 简单的路由使用
*/
public class SimpleRouter extends AbstractVerticle {
@Override
public void start() throws Exception {
//读取bean配置文件,注册所有bean,获取上下文对象
//方法1:
//xml文件手动注册bean方法
// ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");
//
//方法2:
//使用注解自动注册
ApplicationContext context = new AnnotationConfigApplicationContext(EatServiceImpl.class); // 创建HttpServer
HttpServer server = vertx.createHttpServer();
// 创建路由对象
Router router = Router.router(vertx); // 监听/index地址 ,就像spring注解@RequestMapping注册虚拟路径,然后调用controller方法
router.route("/index").handler(new IndexHandle(context)); // 把请求交给路由处理--------------------(1)
//旧版写法
server.requestHandler(router::accept);
//新版写法,需要版本在4以上才可以
// server.requestHandler(router);
server.listen(8080);
} public static void main(String[] args) {
Vertx.vertx().deployVerticle(new SimpleRouter());
}
}
package xue.myVertX.likeController; import io.vertx.core.Handler;
import io.vertx.ext.web.RoutingContext;
import org.springframework.context.ApplicationContext;
import xue.myVertX.service.EatService;
import xue.myVertX.service.serviceImpl.EatServiceImpl; /**
* 这个类就像spring注解controller,
*/
public class IndexHandle implements Handler<RoutingContext> {
private EatService eatService;
public IndexHandle(final ApplicationContext context) {
//读取全局bean配置文件,实例bean对象
//方法1,配合xml手动注册,可不写注解
// eatService = (EatService) context.getBean("eatService");
//方法2,使用注解,需要在实现类加@Service才可以被调用,参数为实现类的名字
eatService = context.getBean(EatServiceImpl.class); } @Override
public void handle(RoutingContext routingContext) {
// //获取参数,其实就是类似于request
// String user = routingContext.request().getParam("user");
// String pass = routingContext.request().getParam("pass");
// routingContext.response()
// .putHeader("Content-type", "text/html;charset=utf-8")
// .end("接收到的用户名为:" + user + " 接收到的密码为:" + pass);
//
//
String str =eatService.eatApply();
System.out.println("可以吃啥?"+str);
routingContext.response().putHeader("Content-type", "text/html;charset=utf-8").end(str);
}
}
3.测试结果
网页

控制台打印

vert.x框架-使用spring注解功能的更多相关文章
- Spring框架学习之注解配置与AOP思想
上篇我们介绍了Spring中有关高级依赖关系配置的内容,也可以调用任意方法的返回值作为属性注入的值,它解决了Spring配置文件的动态性不足的缺点.而本篇,我们将介绍Spring的又一大核心 ...
- java框架之Spring(2)-注解配置IOC&AOP配置
注解配置IoC 准备 1.要使用注解方式配置 IoC,除了之前引入的基础 jar 包,还需要引入 spring-aop 支持包,如下: 2.在 applicationContext.xml 中引入 c ...
- SSM框架之Spring(3)IOC及依赖注入(基于注解的实现)
Spring(3)IOC及依赖注入(基于注解的实现) 学习基于注解的 IoC 配置,大家脑海里首先得有一个认知,即注解配置和 xml 配置要实现的功能都是一样 的,都是要降低程序间的耦合.只是配置的形 ...
- 使用Spring注解来简化ssh框架的代码编写
目的:主要是通过使用Spring注解的方式来简化ssh框架的代码编写. 首先:我们浏览一下原始的applicationContext.xml文件中的部分配置. <bean id="m ...
- atititt.java定时任务框架选型Spring Quartz 注解总结
atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...
- 详解Java的Spring框架中的注解的用法
转载:http://www.jb51.net/article/75460.htm 1. 使用Spring注解来注入属性 1.1. 使用注解以前我们是怎样注入属性的 类的实现: class UserMa ...
- Spring框架的IOC核心功能快速入门
2. 步骤一:下载Spring框架的开发包 * 官网:http://spring.io/ * 下载地址:http://repo.springsource.org/libs-release-local/ ...
- spring作用、spring注解、管理对象的作用域与生命周期、自动装配、Spring的框架包有哪些作用是什么
Spring 1. 作用 创建和管理对象,使得开发过程中,可以不必使用new关键字创建对象,而是直接获取对象!并且,还可以通过一些配置,使得某些获取到的对象,其中某些属性已经是被赋值的! 2. Spr ...
- Spring注解实现定时功能以及Quartz定时器
一:Spring注解实现--------->Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz 1:maven配置: <!-- quartz--> <d ...
随机推荐
- 1.使用Lucene开发自己的搜索引擎--倒排索引基础知识
1.单词--文档矩阵 单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义.图3-1的每列代表一个文档,每行代表一个单词,打对勾的位置代表包含关系.
- python实现skywalking的trace模块过滤和报警
skywalking本身的报警功能,用起来视乎不是特别好用,目前想实现对skywalking的trace中的错误接口进行过滤并报警通知管理员和开发.所以自己就用python对skywalking做了二 ...
- AT1980 [AGC001B] Mysterious Light 题解
# 题意:高桥 くん 有一个边长为 N 的三枚镜子构成的正三角形 , 顶点为 a, b, c. 他有一个超级步枪 , 放在 AB 段的P点上,使得 AP=X . 并沿着平行于 BC 的方向发射一道光 ...
- Redis集群到集群迁移
目录 一.物理导入 简介 实际操作 一.物理导入 简介 redis集群在存储数据时,是根据槽点进行存储.例如老集群A如下: 都在一台机器,实际可以在多台机器上. 主节点:7000(0-5460) 70 ...
- Three.js 实现3D全景侦探小游戏🕵️
背景 你是嘿嘿嘿侦探社实习侦探️,接到上级指派任务,到甄开心小镇调查市民甄不戳宝石失窃案,根据线人流浪汉老石提供的线索,小偷就躲在小镇,快把他找出来,帮甄不戳寻回失窃的宝石吧! 本文使用 Three ...
- bjdctf_2020_router
这道题其实主要考linux下的命令.我们来试一下!!! 可以看到,只要我们在命令之间加上分号,就可以既执行前面的命令,又执行后面的命令... 这道题就不看保护了,直接看一下关键的代码. 这里可以看到s ...
- C# ASP.NET MVC/WebApi 或者 ASP.NET CORE 最简单高效的跨域设置
概述 前面写了一篇:<C# ASP.NET WebApi 跨域设置>的文章,主要针对 ASP.NET WebApi 项目. 今天遇到 ASP.NET MVC 项目也需要设置跨域,否则浏览器 ...
- 替换资源(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 还是那个熟悉的某吃货甲,一天之内给他分配了9.6个工时的吃量,这太不厚道了哈,人家一个人又要开吃又要喝汤,这怎么吃得消呢? ...
- Linux centos 安装Docker
安装docker需要centos7 内核3.1以上 基本上centos7以上的都支持, 然后先更新到最新 sudo yum update 然后直接安装 sudo yum install docker ...
- CSAcademy Prefix Suffix Counting 题解
CSAcademy Prefix Suffix Counting 题解 目录 CSAcademy Prefix Suffix Counting 题解 题意 思路 做法 程序 题意 给你两个数字\(N\ ...