Commit 0d6a8d90c57ca279556ea677f6c371d221f19556
1 parent
4abeadc6
解决spring循环注入导致的服务无法启动
Showing
1 changed file
with
24 additions
and
11 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/SIPProcessorFactory.java
| @@ -34,6 +34,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.response.impl.CancelResponseProces | @@ -34,6 +34,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.response.impl.CancelResponseProces | ||
| 34 | import com.genersoft.iot.vmp.gb28181.transmit.response.impl.InviteResponseProcessor; | 34 | import com.genersoft.iot.vmp.gb28181.transmit.response.impl.InviteResponseProcessor; |
| 35 | import com.genersoft.iot.vmp.gb28181.transmit.response.impl.OtherResponseProcessor; | 35 | import com.genersoft.iot.vmp.gb28181.transmit.response.impl.OtherResponseProcessor; |
| 36 | import com.genersoft.iot.vmp.storager.IVideoManagerStorager; | 36 | import com.genersoft.iot.vmp.storager.IVideoManagerStorager; |
| 37 | +import com.genersoft.iot.vmp.utils.SpringBeanFactory; | ||
| 37 | import com.genersoft.iot.vmp.utils.redis.RedisUtil; | 38 | import com.genersoft.iot.vmp.utils.redis.RedisUtil; |
| 38 | 39 | ||
| 39 | /** | 40 | /** |
| @@ -82,12 +83,10 @@ public class SIPProcessorFactory { | @@ -82,12 +83,10 @@ public class SIPProcessorFactory { | ||
| 82 | @Autowired | 83 | @Autowired |
| 83 | private OtherResponseProcessor otherResponseProcessor; | 84 | private OtherResponseProcessor otherResponseProcessor; |
| 84 | 85 | ||
| 85 | - @Autowired | ||
| 86 | - @Qualifier(value="tcpSipProvider") | 86 | + // 注:这里使用注解会导致循环依赖注入,暂用springBean |
| 87 | private SipProvider tcpSipProvider; | 87 | private SipProvider tcpSipProvider; |
| 88 | - | ||
| 89 | - @Autowired | ||
| 90 | - @Qualifier(value="udpSipProvider") | 88 | + |
| 89 | + // 注:这里使用注解会导致循环依赖注入,暂用springBean | ||
| 91 | private SipProvider udpSipProvider; | 90 | private SipProvider udpSipProvider; |
| 92 | 91 | ||
| 93 | public ISIPRequestProcessor createRequestProcessor(RequestEvent evt) { | 92 | public ISIPRequestProcessor createRequestProcessor(RequestEvent evt) { |
| @@ -97,14 +96,14 @@ public class SIPProcessorFactory { | @@ -97,14 +96,14 @@ public class SIPProcessorFactory { | ||
| 97 | if (Request.INVITE.equals(method)) { | 96 | if (Request.INVITE.equals(method)) { |
| 98 | InviteRequestProcessor processor = new InviteRequestProcessor(); | 97 | InviteRequestProcessor processor = new InviteRequestProcessor(); |
| 99 | processor.setRequestEvent(evt); | 98 | processor.setRequestEvent(evt); |
| 100 | - processor.setTcpSipProvider(tcpSipProvider); | ||
| 101 | - processor.setUdpSipProvider(udpSipProvider); | 99 | + processor.setTcpSipProvider(getTcpSipProvider()); |
| 100 | + processor.setUdpSipProvider(getUdpSipProvider()); | ||
| 102 | return processor; | 101 | return processor; |
| 103 | } else if (Request.REGISTER.equals(method)) { | 102 | } else if (Request.REGISTER.equals(method)) { |
| 104 | RegisterRequestProcessor processor = new RegisterRequestProcessor(); | 103 | RegisterRequestProcessor processor = new RegisterRequestProcessor(); |
| 105 | processor.setRequestEvent(evt); | 104 | processor.setRequestEvent(evt); |
| 106 | - processor.setTcpSipProvider(tcpSipProvider); | ||
| 107 | - processor.setUdpSipProvider(udpSipProvider); | 105 | + processor.setTcpSipProvider(getTcpSipProvider()); |
| 106 | + processor.setUdpSipProvider(getUdpSipProvider()); | ||
| 108 | processor.setHandler(handler); | 107 | processor.setHandler(handler); |
| 109 | processor.setPublisher(publisher); | 108 | processor.setPublisher(publisher); |
| 110 | processor.setSipConfig(sipConfig); | 109 | processor.setSipConfig(sipConfig); |
| @@ -129,8 +128,8 @@ public class SIPProcessorFactory { | @@ -129,8 +128,8 @@ public class SIPProcessorFactory { | ||
| 129 | } else if (Request.MESSAGE.equals(method)) { | 128 | } else if (Request.MESSAGE.equals(method)) { |
| 130 | MessageRequestProcessor processor = new MessageRequestProcessor(); | 129 | MessageRequestProcessor processor = new MessageRequestProcessor(); |
| 131 | processor.setRequestEvent(evt); | 130 | processor.setRequestEvent(evt); |
| 132 | - processor.setTcpSipProvider(tcpSipProvider); | ||
| 133 | - processor.setUdpSipProvider(udpSipProvider); | 131 | + processor.setTcpSipProvider(getTcpSipProvider()); |
| 132 | + processor.setUdpSipProvider(getUdpSipProvider()); | ||
| 134 | processor.setPublisher(publisher); | 133 | processor.setPublisher(publisher); |
| 135 | processor.setRedis(redis); | 134 | processor.setRedis(redis); |
| 136 | processor.setDeferredResultHolder(deferredResultHolder); | 135 | processor.setDeferredResultHolder(deferredResultHolder); |
| @@ -158,4 +157,18 @@ public class SIPProcessorFactory { | @@ -158,4 +157,18 @@ public class SIPProcessorFactory { | ||
| 158 | } | 157 | } |
| 159 | } | 158 | } |
| 160 | 159 | ||
| 160 | + private SipProvider getTcpSipProvider() { | ||
| 161 | + if (tcpSipProvider == null) { | ||
| 162 | + tcpSipProvider = (SipProvider) SpringBeanFactory.getBean("tcpSipProvider"); | ||
| 163 | + } | ||
| 164 | + return tcpSipProvider; | ||
| 165 | + } | ||
| 166 | + | ||
| 167 | + private SipProvider getUdpSipProvider() { | ||
| 168 | + if (udpSipProvider == null) { | ||
| 169 | + udpSipProvider = (SipProvider) SpringBeanFactory.getBean("udpSipProvider"); | ||
| 170 | + } | ||
| 171 | + return udpSipProvider; | ||
| 172 | + } | ||
| 173 | + | ||
| 161 | } | 174 | } |