一.依赖
<!-- https://mvnrepository.com/artifact/io.netty/netty-all -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</dependency>
二.server端集成netty
启动类添加@ServletComponentScan
package com.hq.alp;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan//防止 @WebListener 无效
@MapperScan("com.hq.alp.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
package com.hq.alp.nettys.server;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Netty 服务监听器
* @author xiangLong
* @date 2019年5月31日 上午10:32:40
*/
@WebListener
public class NettyServerListener implements ServletContextListener {
private Logger log = LoggerFactory.getLogger(NettyServerListener.class);
/** 注入NettyServer */
@Autowired
private NettyServer nettyServer;
@Override
public void contextInitialized(ServletContextEvent sce) {
log.info("ServletContex初始化...");
Thread thread = new Thread(new NettyServerThread());
// 启动netty服务
thread.start();
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
/**
* Netty 服务启动线程
*/
private class NettyServerThread implements Runnable {
@Override
public void run() {
nettyServer.run();
}
}
}