竹笋

首页 » 问答 » 环境 » Netty系列之八整合Springboo
TUhjnbcbe - 2024/9/15 4:51:00
白癜风治疗目标 http://www.zgbdf.net/

前面章节已经系统的讲解了Netty的基础知识,今天我们聊聊它与Springboot以及log4j的整合使用。Springboot作为当下Java生态里最流行的框架,必须整合,否则Netty的应用场景必然受限。好在spring设计精巧,兼容并包,有容乃大,Netty要与它整合不是难事。log4j作为Apache的开源项目,它提供了功能强大的日志组件,提供相当丰富且方便的日志API,Netty与它整合,也是轻而易举的事情。

与SpringBoot整合

引入依赖需要在项目中引入Springboot的依赖,使用的是2.0.3版本。首先引入父依赖

parent

groupIdorg.springframework.boot/groupId

artifactIdspring-boot-starter-parent/artifactId

version2.0.3.RELEASE/version

/parent

然后,引入使用的相关依赖

dependency

artifactIdspring-boot-configuration-processor/artifactId

optionaltrue/optional

/dependency

artifactIdspring-boot-autoconfigure/artifactId

引入依赖后,使用mvncleaninstall命令将依赖下载到本地,构建项目。

编写Springboot启动类

启动一个springboot项目,大家应该都是轻车熟路。写一个带

SpringBootApplication注解的启动类,在main方法里调用SpringApplication.run(XXX.class,args)就可以了。但我们除了启动springboot外,还得启动netty服务。这时候,就需要使用springboot的CommandLineRunner接口,要不,怎么说springboot设计精巧,兼容并包,有容乃大呢。各种需求基本上springboot都能有办法解决,这就是它的精妙之处。springboot会在容器初始化完成后,调用实现了CommandLineRunner接口的对象的run方法,执行一些用户任务,这些任务可以是根据需求定制的,比如读取配置文件,初始化连接等。类似还有ApplicationRunner接口也能实现这样的功能,两者的区别感兴趣的可以自行查阅资料学习。如果有多个类实现了CommandLineRunner或ApplicationRunner接口,有两种方法保证这些run方法的执行顺序。1、在实体类上使用

Order注解,执行优先级是按value值从小到大顺序。2、实体类实现Order接口。

SpringBootApplication

Order(value=-2)

publicclassNettyApplicationimplementsCommandLineRunner{

Override

publicvoidrun(String...strings)throwsException{

EchoServerechoServer=newEchoServer();

echoServer.start();

}

publicstaticvoidmain(String[]args){

SpringApplication.run(NettyApplication.class,args);

}

当然,springboot本身也对log4j提供了支持,一般而言,我们直接使用springboot封装的log4j更加友好顺理成章。springboot的log4j的依赖如下:

artifactIdspring-boot-starter-logging/artifactId

artifactIdspring-boot-starter-log4j/artifactId

version1.3.8.RELEASE/version

这个使用很简单,如果不想使用springboot封装的log4j,想要选择原生的log4j也是可以的,那么可以引用如下的依赖:

groupIdlog4j/groupId

artifactIdlog4j/artifactId

version1.2.17/version

groupIdorg.slf4j/groupId

artifactIdslf4j-api/artifactId

version1.7.25/version

artifactIdslf4j-log4j12/artifactId

scopetest/scope

artifactIdslf4j-simple/artifactId

坚持原创,码字不易,有喜欢的朋友,麻烦点个

1
查看完整版本: Netty系列之八整合Springboo