JavaLib | 消息引擎的妙用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_28336351/article/details/82461123

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

展开阅读全文

没有更多推荐了,返回首页