近期做一些物联网方面项目,使用到了tcp协议,之前公司做过socket短连接,网上找了一个简单的demo,很早便学习到nio方面知识,学习了《netty从入门到精通》这本书,同时也根据网上视频做了几个demo,但学习不太深入,刚好物联网项目,就直接使用netty,前期直接使用这个框架,但作为近十年开发的java程序员,没有spring感觉总少了很多不便,后期改框架时想到了使用springboot整合netty代码。
先说之前项目中做socket代码怎么用spring管理的:利用springboot启动后启动socket服务,是没有被spring管理的
public class CouponApplication {
public static void main(String[] args) {
log.info("当前版本为:couponmisserver-0.0.5-SNAPSHOT");
log.info("版本日期:2020-1-7");
ApplicationContext context = SpringApplication.run(CouponApplication.class, args);
//启动stock服务
Integer port = Integer.valueOf(Config.getConfig().get("socketPort"));
SocketServer socketServer = new SocketServer();
socketServer.init(port, context);
}
}
网上一大神推荐的一个使用`CommandLineRunner `来加一个线程启动netty
/**
* author: hejz
* data: 2022-5-9
*/
@SpringBootApplication
@Slf4j
@EnableScheduling
public class Application implements CommandLineRunner {
@Autowired
private NettyServer nettyServer;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... args) throws Exception {
nettyS