文档章节

JavaLib | 消息引擎的妙用

冯文议
 冯文议
发布于 2018/09/06 14:47
字数 435
阅读 11
收藏 0

JavaLib开始支持消息引擎啦。这里我们以支付方式的选择来进行演示。

闲话少说,直接进入今天的主题。

项目搭建

1、你需要用Spring Boot搭建一个项目

2、引入 JavaLib

<dependencies>
    ...
    <dependency>
        <groupId>com.github.fengwenyi</groupId>
        <artifactId>JavaLib</artifactId>
        <version>1.0.4.RELEASE</version>
    </dependency>
    ...
</dependencies>

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

写代码

1、编写Handler。需要实现 Handler 接口中的 execute方法。

这里有两个,AliPayHandler, VXPayHandler。我们看一下 AliPayHandler

import com.fengwenyi.javalib.handler.Handler;
import com.fengwenyi.javalib.messageengine.CommonMessage;
import com.fengwenyi.messageengine.MEConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 支付宝支付Handler
 *
 * @author Wenyi Feng
 * @since 2018-09-06
 */
@Component
@Slf4j
public class AliPayHandler implements Handler {
    @Override
    public void execute(CommonMessage message) throws Exception {
        log.info("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");

        log.info("支付方式:{}", "支付宝");
        log.info("姓名:{}", message.getHeader(MEConstant.NAME));
        log.info("账号:{}", MEConstant.ACCOUNT);

        log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
    }
}

2、编写Bean。

import com.fengwenyi.javalib.handler.HandlerRegister;
import com.fengwenyi.messageengine.handler.AliPayHandler;
import com.fengwenyi.messageengine.handler.VXPayHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


/**
 * Bean配置
 *
 * @author Wenyi Feng
 * @since 2018-09-06
 */
@Configuration
public class BeanConfig {

    @Autowired
    private AliPayHandler aliPayHandler;

    @Autowired
    private VXPayHandler vxPayHandler;

    @Bean
    public HandlerRegister messageEngineBean() {

        HandlerRegister handlerRegister = new HandlerRegister();

        handlerRegister.setHandler("ali", aliPayHandler);
        handlerRegister.setHandler("vx", vxPayHandler);

        return handlerRegister;
    }

}

3、写测试代码

import com.fengwenyi.javalib.handler.Handler;
import com.fengwenyi.javalib.handler.HandlerRegister;
import com.fengwenyi.javalib.messageengine.CommonMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class MessageEngineApplication {

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

    @Autowired
    private HandlerRegister handlerRegister;

    @RequestMapping("/pay")
    public void pay(String type, String name, String account) {

        CommonMessage cm = new CommonMessage();
        cm.setHeader(MEConstant.NAME, name);
        cm.setHeader(MEConstant.ACCOUNT, account);

        Handler handler = handlerRegister.getHandler(type);
        try {
            handler.execute(cm);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

测试

请求URL

http://localhost:8080/pay?type=ali&name=张三&account=ali_zhangsan

打印日志(截图)

支付宝支付信息

请求URL

http://localhost:8080/pay?type=vx&name=张三&account=vx_zhangsan

打印日志(截图)

微信支付信息

资料

[1] 感谢 @毛什么文 叫我写 Bean

[2] 本节测试代码:message-engine

© 著作权归作者所有

冯文议
粉丝 11
博文 47
码字总数 47895
作品 0
成都
高级程序员
私信 提问
JavaLib-quartz | 基于Spring Boot Quartz开发的定时任务

基于Spring Boot Quartz开发的JavaLib-quartz,目的是帮你快速构建定时任务系统,你可以专心编写你的业务逻辑,而不必关注定时任务具体是如何实现的,他的性能如何,有没有异常以及异常处理,...

冯文议
2018/07/30
62
0
JavaLib | Result让你的API接口统一化(2)

引言 JavaLib很早就实现了Result模块,我也一直在用,但那是针对公用API接口的,如果后端开发人员也像那样写API接口给前端的话,非常麻烦,所以,很早就决定要重写了,我也是参考了很多人的,...

冯文议
2018/09/02
53
0
实战:基于Spring Boot快速开发RESTful风格API接口

写在前面的话 这篇文章计划是在过年期间完成的,示例代码都写好了,结果亲戚来我家做客,文章没来得及写。已经很久没有更新文章了,小伙伴们,有没有想我啊。言归正传,下面开始,今天的话题...

JAVA_冯文议
02/20
121
0
PacketInterceptor的妙用

of的设计是模块化,插件化的,尽可能的解耦各功能之间的关联,通过各种XMPPServer实例来协调各种资源,这就非常巧妙和轻盈。其中又有很多功能组件非常灵活,比如:PacketInterceptor。 顾名思...

今幕明
2014/04/02
415
0
Java01:使用Jdbc连接MySQL数据库

Java01:使用Jdbc连接MySQL数据库 一、编写代码 二、编译代码 三、运行程序 JdbcTest01 说明:Oracle和MySQL的jdbc 驱动都在 /opt/javalib/目录下 Linux下C/C++、ACE、Boost、高性能服务器端应...

kwarph
2013/09/03
241
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
533
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
31
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
16
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
47
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
56
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部