1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhongl-config-annotation

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Конфигурационная аннотация

Статус сборки Codacy Badge

Библиотека переопределения-пригодной конфигурации помогает разработчикам Scala поддерживать файлы конфигураций config, используя скаласские макросные аннотации.

Использование

Создайте трейт в стиле конфигурации как определение конфигурации, например:

import com.wacai.config.annotation._
import scala.concurrent.duration._

@conf trait Kafka {
  val server = new {
    val host = "wacai.com"
    val port = 12306
  }

  val socket = new {
    val timeout = 3 seconds
    val buffer = 1024 * 64L
  }

  val client = "wacai"
}

Используйте конфигурацию путём расширения её,

class Consumer extends Kafka {
  val client = new SimpleConsumer(
    server.host,
    server.port,
    socket.timeout,
    socket.buffer,
    client
  )
  
  ...
}

Скомпилируйте, @conf позволит компилятору Scala вставить код в Kafka.scala:

trait Kafka {
  val server = new {
    val host = config.getString("kafka.server.host")
    val port = config.getInt("kafka.server.port")
  }
  val socket = new {
    val timeout = Duration(config.getDuration("kafka.socket.timeout", SECONDS))
    val buffer = config.getBytes("kafka.socket.buffer")
  }
  val client = config.getString("kafka.client")

  ...
}

После этого будет сгенерирован файл конфигурации kafka.conf, расположенный в src/main/resources следующего содержания:

kafka {
  server {
    host = wacai.com
    port = 12306
  }

  socket {
    timeout = 3s
    buffer = 64K
  }

  client = wacai
}

Наконец, требуется создать файл application.conf для включения kafka.conf следующим образом:``` include "kafka.conf"



## Установка

> Внимание: поддерживается только Scala 2.11.0+

Установите ваш `project/build.properties` следующим образом:

sbt.version = 0.13.13


Установите ваш `build.sbt` следующим образом:

```scala
addCompilerPlugin("org.scalamacros" % "paradise" % "2.0.1" cross CrossVersion.full)

libraryDependencies += "com.wacai" %% "config-annotation" % "0.3.5"

Версия v0.3.6 для Scala 2.12.0+

Соответствие типов|Тип Scala | Получатель конфига | Значение |

|----------|--------------------|---------------| | Boolean | getBoolean | true/false | | Int | getInt | число | | Double | getDouble | число с плавающей запятой | | String | getString | текст | | Long | getBytes | число с единицей измерения (B, K, M, G) | | Duration | getDuration | число с единицей измерения (ns, us, ms, s, m, h, d)|

Интеграция с актором Akka

import com.wacai.config.annotation._

@conf trait Kafka extends Configurable { self: Actor =>
  def config = context.system.settings.config

  ...
}

Изменение директории по умолчанию для генерации конфигурационных файлов

Конфигурационные файлы создаются по умолчанию в директории src/main/resources.

Директория может быть изменена путём добавления макросных настроек в scalacOptions в файле build.sbt:

scalacOptions += "-Xmacro-settings:conf.output.dir=/путь/к/выходной/директории"

Пример запуска

Пожалуйста, обратитесь к примеру использования аннотаций конфигураций.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Безопасный для рефакторинга способ использования конфигурации Typesafe с помощью макроаннотации Scala. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zhongl-config-annotation.git
git@api.gitlife.ru:oschina-mirror/zhongl-config-annotation.git
oschina-mirror
zhongl-config-annotation
zhongl-config-annotation
master