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注解功能的更多相关文章

  1. Spring框架学习之注解配置与AOP思想

         上篇我们介绍了Spring中有关高级依赖关系配置的内容,也可以调用任意方法的返回值作为属性注入的值,它解决了Spring配置文件的动态性不足的缺点.而本篇,我们将介绍Spring的又一大核心 ...

  2. java框架之Spring(2)-注解配置IOC&AOP配置

    注解配置IoC 准备 1.要使用注解方式配置 IoC,除了之前引入的基础 jar 包,还需要引入 spring-aop 支持包,如下: 2.在 applicationContext.xml 中引入 c ...

  3. SSM框架之Spring(3)IOC及依赖注入(基于注解的实现)

    Spring(3)IOC及依赖注入(基于注解的实现) 学习基于注解的 IoC 配置,大家脑海里首先得有一个认知,即注解配置和 xml 配置要实现的功能都是一样 的,都是要降低程序间的耦合.只是配置的形 ...

  4. 使用Spring注解来简化ssh框架的代码编写

     目的:主要是通过使用Spring注解的方式来简化ssh框架的代码编写. 首先:我们浏览一下原始的applicationContext.xml文件中的部分配置. <bean id="m ...

  5. atititt.java定时任务框架选型Spring Quartz 注解总结

    atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz  (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...

  6. 详解Java的Spring框架中的注解的用法

    转载:http://www.jb51.net/article/75460.htm 1. 使用Spring注解来注入属性 1.1. 使用注解以前我们是怎样注入属性的 类的实现: class UserMa ...

  7. Spring框架的IOC核心功能快速入门

    2. 步骤一:下载Spring框架的开发包 * 官网:http://spring.io/ * 下载地址:http://repo.springsource.org/libs-release-local/ ...

  8. spring作用、spring注解、管理对象的作用域与生命周期、自动装配、Spring的框架包有哪些作用是什么

    Spring 1. 作用 创建和管理对象,使得开发过程中,可以不必使用new关键字创建对象,而是直接获取对象!并且,还可以通过一些配置,使得某些获取到的对象,其中某些属性已经是被赋值的! 2. Spr ...

  9. Spring注解实现定时功能以及Quartz定时器

    一:Spring注解实现--------->Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz 1:maven配置: <!-- quartz--> <d ...

随机推荐

  1. 【C/C++】BanGDream活动点数计算器

    作为一个白嫖咸鱼,我每个活动都只打出三星卡就不玩了,于是写了一个模拟器,算算还要打几把hhh #include <iostream> #include <algorithm> ...

  2. Spring Cloud Eureka源码分析之服务注册的流程与数据存储设计!

    Spring Cloud是一个生态,它提供了一套标准,这套标准可以通过不同的组件来实现,其中就包含服务注册/发现.熔断.负载均衡等,在spring-cloud-common这个包中,org.sprin ...

  3. 背包问题-C语言实现

    转自:http://blog.csdn.net/tjyyyangyi/article/details/7929665 0-1背包问题 参考: http://blog.csdn.net/liwenjia ...

  4. [BUUCTF]REVERSE——刮开有奖

    刮开有奖 附件 步骤: 例行检查,无壳,32位程序 32位ida载入,shift+f12检索程序里的字符串,看到了一个base64加密的特征字符串,猜想这题用到了base64加密 从main函数开始看 ...

  5. Winamp栈溢出漏洞研究

    Winamp作为一款在90年代最主流的音乐播放器,到现在仍有大量的忠实粉丝.当然也存在很多漏洞.下面具体分析的就是打开软件的更新历史信息而触发的一个缓冲区溢出漏洞. 0X01漏洞重现 正常的whats ...

  6. 升级过log4j,却还没搞懂log4j漏洞的本质?

    摘要:log4j远程代码漏洞问题被大范围曝光后已经有一段时间了,今天完整讲清JNDI和RMI以及该漏洞的深层原因. 本文分享自华为云社区<升级过log4j,却还没搞懂log4j漏洞的本质?为你完 ...

  7. c++之可变参数格式化字符串(c++11可变模板参数)

    本文将使用 泛型 实现可变参数. 涉及到的关见函数:  std::snprintf 1.一个例子 函数声明及定义 1 // 泛型 2 template <typename... Args> ...

  8. 【LeetCode】77. Combinations 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:递归 方法二:回溯法 日期 题目地址:htt ...

  9. 【LeetCode】701. Insert into a Binary Search Tree 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  10. 【LeetCode】796. Rotate String 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...