Spring MVC与Socket
前几天做一个项目,项目需求服务器端与手机APP用HTTP协议,与硬件用Socket协议。 服务器后端基于Spring MVC + MyBatis框架,实现与手机APP的通信没问题,但是业务需求中与硬件的交互需要用到Spring的service层的一些东西,首先创建ServerSocket监听某一端口,所以不能用Spring的IOC容器,而且Spring也没有提供这方面的IOC(控制反转),其次在Socket线程中,直接DI(依赖注入)也是不可能的,,因为这个实例都不是IOC容器托管的。 具体解决方案如下: 首先实现一个监听类来创建ServerSocket线程: web.xml:
1 | <!–注册ServerSocket监听器–> |
SocketServiceLoader:
1 | /** |
创建线程后,实现了端口监听,此时要用到service层的东西,但是service实现类由IOC托管,直接new也显然不行,解决方案就是直接从Spring的IOC容器中直接获取service实例:
1 | ApplicationContext applicationContext = new FileSystemXmlApplicationContext("classpath:spring/spring.xml"); |
加载配置service的xml文件,后面一定要跟service的实现类,不然也会出错 就这样即可得到一个service实例。 这样的方法也同样可以用在其他地方获取service实例。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ansore!




