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