From ae336ae494cdfaba18312c21d7ae5a2b472fa5a9 Mon Sep 17 00:00:00 2001 From: Lawrence <1934378145@qq.com> Date: 星期四, 17 十二月 2020 22:37:45 +0800 Subject: [PATCH] 解决编译为jar后运行报循环依赖错误的问题 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorFactory.java | 51 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 35 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorFactory.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorFactory.java index 88e7ccf..f063b49 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorFactory.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorFactory.java @@ -7,10 +7,13 @@ import javax.sip.message.Request; import javax.sip.message.Response; +import com.alibaba.fastjson.JSON; +import com.genersoft.iot.vmp.gb28181.transmit.response.impl.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import com.genersoft.iot.vmp.conf.SipConfig; @@ -29,11 +32,8 @@ import com.genersoft.iot.vmp.gb28181.transmit.request.impl.RegisterRequestProcessor; import com.genersoft.iot.vmp.gb28181.transmit.request.impl.SubscribeRequestProcessor; import com.genersoft.iot.vmp.gb28181.transmit.response.ISIPResponseProcessor; -import com.genersoft.iot.vmp.gb28181.transmit.response.impl.ByeResponseProcessor; -import com.genersoft.iot.vmp.gb28181.transmit.response.impl.CancelResponseProcessor; -import com.genersoft.iot.vmp.gb28181.transmit.response.impl.InviteResponseProcessor; -import com.genersoft.iot.vmp.gb28181.transmit.response.impl.OtherResponseProcessor; import com.genersoft.iot.vmp.storager.IVideoManagerStorager; +import com.genersoft.iot.vmp.utils.SpringBeanFactory; import com.genersoft.iot.vmp.utils.redis.RedisUtil; /** @@ -78,33 +78,35 @@ @Autowired private CancelResponseProcessor cancelResponseProcessor; + + @Autowired + @Lazy + private RegisterResponseProcessor registerResponseProcessor; @Autowired private OtherResponseProcessor otherResponseProcessor; - @Autowired - @Qualifier(value="tcpSipProvider") + // 娉細杩欓噷浣跨敤娉ㄨВ浼氬鑷村惊鐜緷璧栨敞鍏ワ紝鏆傜敤springBean private SipProvider tcpSipProvider; - - @Autowired - @Qualifier(value="udpSipProvider") + + // 娉細杩欓噷浣跨敤娉ㄨВ浼氬鑷村惊鐜緷璧栨敞鍏ワ紝鏆傜敤springBean private SipProvider udpSipProvider; public ISIPRequestProcessor createRequestProcessor(RequestEvent evt) { Request request = evt.getRequest(); String method = request.getMethod(); - logger.info("鎺ユ敹鍒版秷鎭細"+request.getMethod()); +// logger.info("鎺ユ敹鍒版秷鎭細"+request.getMethod()); if (Request.INVITE.equals(method)) { InviteRequestProcessor processor = new InviteRequestProcessor(); processor.setRequestEvent(evt); - processor.setTcpSipProvider(tcpSipProvider); - processor.setUdpSipProvider(udpSipProvider); + processor.setTcpSipProvider(getTcpSipProvider()); + processor.setUdpSipProvider(getUdpSipProvider()); return processor; } else if (Request.REGISTER.equals(method)) { RegisterRequestProcessor processor = new RegisterRequestProcessor(); processor.setRequestEvent(evt); - processor.setTcpSipProvider(tcpSipProvider); - processor.setUdpSipProvider(udpSipProvider); + processor.setTcpSipProvider(getTcpSipProvider()); + processor.setUdpSipProvider(getUdpSipProvider()); processor.setHandler(handler); processor.setPublisher(publisher); processor.setSipConfig(sipConfig); @@ -127,10 +129,11 @@ processor.setRequestEvent(evt); return processor; } else if (Request.MESSAGE.equals(method)) { + MessageRequestProcessor processor = new MessageRequestProcessor(); processor.setRequestEvent(evt); - processor.setTcpSipProvider(tcpSipProvider); - processor.setUdpSipProvider(udpSipProvider); + processor.setTcpSipProvider(getTcpSipProvider()); + processor.setUdpSipProvider(getUdpSipProvider()); processor.setPublisher(publisher); processor.setRedis(redis); processor.setDeferredResultHolder(deferredResultHolder); @@ -153,9 +156,25 @@ return byeResponseProcessor; } else if (Request.CANCEL.equals(method)) { return cancelResponseProcessor; + }else if (Request.REGISTER.equals(method)) { + return registerResponseProcessor; } else { return otherResponseProcessor; } } + private SipProvider getTcpSipProvider() { + if (tcpSipProvider == null) { + tcpSipProvider = (SipProvider) SpringBeanFactory.getBean("tcpSipProvider"); + } + return tcpSipProvider; + } + + private SipProvider getUdpSipProvider() { + if (udpSipProvider == null) { + udpSipProvider = (SipProvider) SpringBeanFactory.getBean("udpSipProvider"); + } + return udpSipProvider; + } + } -- Gitblit v1.8.0