JavaLib | 消息引擎的妙用

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

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

项目搭建

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

2、引入 JavaLib

<dependencies>
    ...
    <dependency>
        <groupId>com.github.fengwenyigroupId>
        <artifactId>JavaLibartifactId>
        <version>1.0.4.RELEASEversion>
    dependency>
    ...
dependencies>

<repositories>
    <repository>
        <id>jitpack.ioid>
        <url>https://jitpack.iourl>
    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

你可能感兴趣的:(JavaLib开源库)