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 ...
随机推荐
- ssm中的注解
1.@Controller 2.@RequestMapping 3.@RequestParam public String getUser(HttpSession session,@RequestPa ...
- 强化学习实战 | 表格型Q-Learning玩井子棋(三)优化,优化
在 强化学习实战 | 表格型Q-Learning玩井字棋(二)开始训练!中,我们让agent"简陋地"训练了起来,经过了耗费时间的10万局游戏过后,却效果平平,尤其是初始状态的数值 ...
- IM即时通讯设计 高并发聊天服务:服务器 + qt客户端(附源码)
来源:微信公众号「编程学习基地」 目录 IM即时通信程序设计 IM即时通讯 设计一款高并发聊天服务需要注意什么 如何设计可靠的消息处理服务 什么是粘包 什么是半包 解决粘包和半包 IM通信协议 应用层 ...
- Apache Log4j 远程代码执行漏洞源码级分析
漏洞的前因后果 漏洞描述 漏洞评级 影响版本 安全建议 本地复现漏洞 本地打印 JVM 基础信息 本地获取服务器的打印信息 log4j 漏洞源码分析 扩展:JNDI 危害是什么? GitHub 项目 ...
- iphone4 与iphone5适配
转:http://www.cnblogs.com/ygm900/archive/2013/05/24/3098015.html iphone4/4s 应用程序升级适配 iphone5 的方法有很多,而 ...
- 【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南
Minio的元数据 数据存储 MinIO对象存储系统没有元数据数据库,所有的操作都是对象级别的粒度的,这种做法的优势是: 个别对象的失效,不会溢出为更大级别的系统失效. 便于实现"强一致性& ...
- ELK 使用filebeat替代Logstash收集日志
使用beats采集日志 之前也介绍过beats是ELK体系中新增的一个工具,它属于一个轻量的日志采集器,以上我们使用的日志采集工具是logstash,但是logstash占用的资源比较大,没有beat ...
- SpringBoot(SpringMVC)使用addViewControllers设置统一请求URL重定向配置
只需要在配置中重写 addViewControllers方法 import org.springframework.context.annotation.Configuration; import o ...
- 浅析.netcore中的Configuration
不管是.net还是.netcore项目,我们都少不了要读取配置文件,在.net中项目,配置一般就存放在web.config中,但是在.netcore中我们新建的项目根本就看不到web.config,取 ...
- C笔试题:将int型数组强制转换为char*,再求strlen,涉及大小端
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int a[2000]; 6 char *p = (ch ...