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 | 34 | import com.genersoft.iot.vmp.gb28181.transmit.response.impl.InviteResponseProcessor; |
| 35 | 35 | import com.genersoft.iot.vmp.gb28181.transmit.response.impl.OtherResponseProcessor; |
| 36 | 36 | import com.genersoft.iot.vmp.storager.IVideoManagerStorager; |
| 37 | +import com.genersoft.iot.vmp.utils.SpringBeanFactory; | |
| 37 | 38 | import com.genersoft.iot.vmp.utils.redis.RedisUtil; |
| 38 | 39 | |
| 39 | 40 | /** |
| ... | ... | @@ -82,12 +83,10 @@ public class SIPProcessorFactory { |
| 82 | 83 | @Autowired |
| 83 | 84 | private OtherResponseProcessor otherResponseProcessor; |
| 84 | 85 | |
| 85 | - @Autowired | |
| 86 | - @Qualifier(value="tcpSipProvider") | |
| 86 | + // 注:这里使用注解会导致循环依赖注入,暂用springBean | |
| 87 | 87 | private SipProvider tcpSipProvider; |
| 88 | - | |
| 89 | - @Autowired | |
| 90 | - @Qualifier(value="udpSipProvider") | |
| 88 | + | |
| 89 | + // 注:这里使用注解会导致循环依赖注入,暂用springBean | |
| 91 | 90 | private SipProvider udpSipProvider; |
| 92 | 91 | |
| 93 | 92 | public ISIPRequestProcessor createRequestProcessor(RequestEvent evt) { |
| ... | ... | @@ -97,14 +96,14 @@ public class SIPProcessorFactory { |
| 97 | 96 | if (Request.INVITE.equals(method)) { |
| 98 | 97 | InviteRequestProcessor processor = new InviteRequestProcessor(); |
| 99 | 98 | processor.setRequestEvent(evt); |
| 100 | - processor.setTcpSipProvider(tcpSipProvider); | |
| 101 | - processor.setUdpSipProvider(udpSipProvider); | |
| 99 | + processor.setTcpSipProvider(getTcpSipProvider()); | |
| 100 | + processor.setUdpSipProvider(getUdpSipProvider()); | |
| 102 | 101 | return processor; |
| 103 | 102 | } else if (Request.REGISTER.equals(method)) { |
| 104 | 103 | RegisterRequestProcessor processor = new RegisterRequestProcessor(); |
| 105 | 104 | processor.setRequestEvent(evt); |
| 106 | - processor.setTcpSipProvider(tcpSipProvider); | |
| 107 | - processor.setUdpSipProvider(udpSipProvider); | |
| 105 | + processor.setTcpSipProvider(getTcpSipProvider()); | |
| 106 | + processor.setUdpSipProvider(getUdpSipProvider()); | |
| 108 | 107 | processor.setHandler(handler); |
| 109 | 108 | processor.setPublisher(publisher); |
| 110 | 109 | processor.setSipConfig(sipConfig); |
| ... | ... | @@ -129,8 +128,8 @@ public class SIPProcessorFactory { |
| 129 | 128 | } else if (Request.MESSAGE.equals(method)) { |
| 130 | 129 | MessageRequestProcessor processor = new MessageRequestProcessor(); |
| 131 | 130 | processor.setRequestEvent(evt); |
| 132 | - processor.setTcpSipProvider(tcpSipProvider); | |
| 133 | - processor.setUdpSipProvider(udpSipProvider); | |
| 131 | + processor.setTcpSipProvider(getTcpSipProvider()); | |
| 132 | + processor.setUdpSipProvider(getUdpSipProvider()); | |
| 134 | 133 | processor.setPublisher(publisher); |
| 135 | 134 | processor.setRedis(redis); |
| 136 | 135 | processor.setDeferredResultHolder(deferredResultHolder); |
| ... | ... | @@ -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 | } | ... | ... |