漲知識丨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(); } } }
寫在最後:歡迎留言討論,加關注,持續更新!