# Spring boot整合Netty

# @PostConstruct注解

@PostConstruct该注解被用来修饰一个非静态的void()方法。

被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。

通常我们会是在Spring框架中使用到@PostConstruct注解 该注解的方法在整个Bean初始化中的执行顺序:

Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)

	@PostConstruct
    public void start() throws InterruptedException {
        ServerBootstrap bootstrap = new ServerBootstrap();
        bootstrap.group(bossGroup, workerGroup)
                .channel(NioServerSocketChannel.class)
                .localAddress(new InetSocketAddress(port))
                //保持长连接
                .childOption(ChannelOption.SO_KEEPALIVE, true)
                //可以对入站\出站事件进行日志记录,从而方便我们进行问题排查
                .handler(new LoggingHandler(LogLevel.DEBUG))
                .childHandler(new NettyServerInitializer());

        ChannelFuture channelFuture = bootstrap.bind().sync();//开启监听

        if (channelFuture.isSuccess()) {
            log.info("启动 Netty 服务端完成,端口: " + port);
        }
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# @PreDestroy注解

关闭spring容器后释放一些资源

	@PreDestroy
    public void destroy() throws InterruptedException {
        bossGroup.shutdownGracefully().sync();
        workerGroup.shutdownGracefully().sync();
    }
1
2
3
4
5