Finatra 框架入门指南
1. 项目目录结构及介绍
Finatra 是一个基于 TwitterServer 和 Finagle 构建的轻量级 Scala 服务框架。以下是 finatra
项目的基本目录结构:
.
├── BUILD.bazel // Bazel 构建文件
├── CHANGELOG.rst // 更新日志
├── CODE_OF_CONDUCT.md // 社区行为准则
├── CONFIG.ini // 示例配置文件
├── CONTRIBUTING.md // 贡献指南
├── LICENSE // 许可证文件
├── PROJECT.yml // SBT 项目配置
├── README.md // 项目读我文件
├── build.sbt // SBT 构建脚本
├── finatra_logo.png // 项目 Logo
├── finatra_logo_text.png // 项目 Logo 文字版
└── pushsite.bash // 发布网站脚本
BUILD.bazel
:Bazel构建系统的配置文件,用于编译和测试项目。CHANGELOG.rst
:记录项目版本更新的内容。CODE_OF_CONDUCT.md
:定义社区参与规则,保持项目环境友好和谐。CONFIG.ini
:示例配置文件,提供配置服务的参考。CONTRIBUTING.md
:为开发者提供了如何贡献代码和报告问题的指导。LICENSE
:Apache 2.0 许可证,说明了项目可以被使用的条件。PROJECT.yml
:SBT 项目的元数据,用于管理依赖和构建设置。README.md
:项目介绍和基本使用指南。build.sbt
:Scala Build Tool (SBT) 的构建配置文件,用于构建和打包应用。*.png
:项目图标,用于识别品牌。pushsite.bash
:用于发布项目文档到 GitHub Pages 的脚本。
2. 项目的启动文件介绍
Finatra 应用的核心是 TwitterServer
组件,通常在项目中会有个主类继承自 com.twitter.server.TwitterServer
并实现服务器逻辑。例如,名为 MyServer.scala
的启动文件可能如下所示:
import com.twitter.finatra.http.HttpServer
import com.twitter.server.TwitterServer
class MyServer extends TwitterServer with HttpServer {
override def defaultHttpPort = 8888 // 设置默认 HTTP 端口
/* 在这里注册控制器和服务 */
def this(config: com.twitter.app.AppConfig) = {
this()
bootstrap()
println(s"Server started on port ${defaultHttpPort}")
}
// 注册一个简单的 HTTP 控制器
private[server] lazy val helloController = new HelloController
// 将控制器注册到服务器
http.register("/hello", handleRequest = helloController.handle)
}
在这个例子中,MyServer
启动了一个监听 8888 端口的 HTTP 服务器,并且包含了 HelloController
来处理 /hello
请求。
3. 项目的配置文件介绍
Finatra 支持多种配置方式,包括 application.conf
或者单独的 .ini
文件。这些文件通常存放于项目资源目录下(src/main/resources
)。下面是一个简单的 application.conf
示例:
finatra {
http {
host = "localhost"
port = 8888
maxRequestSizeInBytes = 10MB
}
}
myApplicationSetting {
key1 = value1
key2 = value2
}
这个配置文件定义了服务器的主机名、端口以及最大请求大小,同时也定义了一组自定义的应用设置。在你的应用中,可以通过 com.twitter.util.Config
类来访问这些配置值。
要加载配置,确保在你的服务器初始化时调用了 loadServerFlags()
方法。例如,在 MyServer
类的 main
函数或构造函数中添加如下代码:
flags.loadServerFlags(getClass())
这样,Finatra 会自动解析并应用配置文件中的参数。
通过上述的目录结构、启动文件和配置文件介绍,你应该对 Finatra 有了初步的理解。接下来,你可以根据项目需求创建服务、定义路由和处理请求,进一步探索这个框架的更多功能。