searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

airlift的自动配置

2024-09-27 09:20:35
6
0

Airlift 是一个可配置的、开箱即用的工具包,帮助开发者提升工作效率,将精力专注于业务实现。Airlift 提供的工具众多,今天会从基础的 configuration、 bootstrap 和 concurrent 开始介绍。

1. configuration

通过注解的方式,将配置文件中的数据绑定到配置类中,接下来我们看下presto是怎么将配置文件的值绑定到配置类(配置类只需要在set方法中添加@Config就行)中。

首先是启动脚本,启动presto服务的命令是bin/launcher start。真正执行的是bin/launcher.py,这个脚本将etc目录下的配置文件给读取出来,并使用-D设置为系统属性的命令行参数,如下图所示

在 Java 中,-D 是用于设置系统属性的命令行参数。系统属性是键值对形式的配置项,它们可以在 Java 应用程序中用来控制不同的行为。通过使用 -D 参数,您可以在启动 Java 应用程序时为系统属性设置值,例如:

java -Dmyapp.debug=true -jar YourApplication.jar

etc目录下的配置文件都会被这个脚本读取,具体可看下launcher.py。

此时配置文件中的值已经通过-D放入到系统属性中,然后在presto源码部分,会对这些属性值进行配置,如下图所示

上一张图读了config.properties中的配置值,其他配置值是下一张图片画线处进行配置

 

在registerConfigurationClasses方法中,会遍历每个module,对每个module中的配置类进行赋值

 

2. bootstrap

对象生命周期管理,在 Presto 中用于 Hive、Druid、Hudi 和 Kudu 连接器的生命周期管理,主要目的就是在对象初始化和销毁时执行特定的处理逻辑,注解 @PostConstruct 标识初始化方法,@PreDestroy 标识销毁算法。

注意:如果一个类使用了 @PostConstruct或者@PreDestroy注解,一定要在module中对这个类进行绑定。

//并且使用这种方式进行添加module
Bootstrap app = new Bootstrap(new AppModule());
Injector injector = app.initialize();
0条评论
作者已关闭评论
c****g
3文章数
0粉丝数
c****g
3 文章 | 0 粉丝
c****g
3文章数
0粉丝数
c****g
3 文章 | 0 粉丝
原创

airlift的自动配置

2024-09-27 09:20:35
6
0

Airlift 是一个可配置的、开箱即用的工具包,帮助开发者提升工作效率,将精力专注于业务实现。Airlift 提供的工具众多,今天会从基础的 configuration、 bootstrap 和 concurrent 开始介绍。

1. configuration

通过注解的方式,将配置文件中的数据绑定到配置类中,接下来我们看下presto是怎么将配置文件的值绑定到配置类(配置类只需要在set方法中添加@Config就行)中。

首先是启动脚本,启动presto服务的命令是bin/launcher start。真正执行的是bin/launcher.py,这个脚本将etc目录下的配置文件给读取出来,并使用-D设置为系统属性的命令行参数,如下图所示

在 Java 中,-D 是用于设置系统属性的命令行参数。系统属性是键值对形式的配置项,它们可以在 Java 应用程序中用来控制不同的行为。通过使用 -D 参数,您可以在启动 Java 应用程序时为系统属性设置值,例如:

java -Dmyapp.debug=true -jar YourApplication.jar

etc目录下的配置文件都会被这个脚本读取,具体可看下launcher.py。

此时配置文件中的值已经通过-D放入到系统属性中,然后在presto源码部分,会对这些属性值进行配置,如下图所示

上一张图读了config.properties中的配置值,其他配置值是下一张图片画线处进行配置

 

在registerConfigurationClasses方法中,会遍历每个module,对每个module中的配置类进行赋值

 

2. bootstrap

对象生命周期管理,在 Presto 中用于 Hive、Druid、Hudi 和 Kudu 连接器的生命周期管理,主要目的就是在对象初始化和销毁时执行特定的处理逻辑,注解 @PostConstruct 标识初始化方法,@PreDestroy 标识销毁算法。

注意:如果一个类使用了 @PostConstruct或者@PreDestroy注解,一定要在module中对这个类进行绑定。

//并且使用这种方式进行添加module
Bootstrap app = new Bootstrap(new AppModule());
Injector injector = app.initialize();
文章来自个人专栏
csding大数据
3 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0