Project Stage | CI | Codecov |
---|---|---|
Scaladex | Jetbrains Plugin | Nexus Snapshots |
---|---|---|
学习Scala宏编程(macro)和抽象语法树(ast)。
本项目目前处于实验阶段,有建议、意见或者问题欢迎提issue。如果本项目对你有帮助,欢迎点个star。
- Java 8、11 编译通过
- Scala 2.11.12、2.12.14、2.13.6 编译通过
@toString
@json
@builder
@log
@apply
@constructor
@equalsAndHashCode
@jacksonEnum
@elapsed
@javaCompatible
ProcessorCreator
Intellij插件
Scala-Macro-Tools
。
基于zio的类似Spring@Cacheable
和@CacheEvict
注解的缓存API定义。该模块不包含具体的存储媒介。
@cacheable
/Cache.apply
@cacheEvict
/Cache.evict
基于zio和caffeine的内存缓存实现,需要cacheable-core
。
基于zio和zio-redis的分布式缓存实现,需要cacheable-core
。
https://bitlap.org/zh-CN/lab/smt
添加库依赖,在sbt中
在gradle,maven中,通常
smt-tools
被替换为smt-tools_2.12
这种。其中,2.12
表示Scala版本号。
使用tools模块
"org.bitlap" %% "smt-tools" % "<VERSION>" //从0.4.0开始名字改成 smt-tools
使用cacheable模块API
// 内部包含的依赖: zio, zio-streams, zio-logging
"org.bitlap" %% "smt-cacheable-core" % "<VERSION>"
使用redis实现的cacheable模块
TODO,目前不可用,无分布式锁
// 分布式缓存, 内部包含的依赖: zio-redis, config, zio-schema, zio-schema-json, 可选的 (zio-schema-derivation用于样例类序列化)
// 依赖于`smt-cacheable-core`(不支持 Scala2.11.x)
"org.bitlap" %% "smt-cacheable-redis" % "<VERSION>"
使用caffeine实现的cacheable模块
// 本地缓存, 内部包含的依赖: config, caffeine
// 依赖于`smt-cacheable-core`
"org.bitlap" %% "smt-cacheable-caffeine" % "<VERSION>"
该库已发布到maven中央仓库,请使用最新版本。仅将本库导入构建系统(例如gradle、sbt)是不够的。你需要多走一步。
Scala 2.11 | Scala 2.12 | Scala 2.13 |
---|---|---|
导入 macro paradise 插件 | 导入 macro paradise 插件 | 开启 编译器标记 -Ymacro-annotations |
addCompilerPlugin("org.scalamacros" % "paradise_<your-scala-version>" % "<plugin-version>")
<your-scala-version>
必须是Scala版本号的完整编号,如2.12.13
,而不是2.12
。
如果这不起作用,可以谷歌寻找替代品。
在scala 2.13.x
版本中,macro paradise的功能直接包含在scala编译器中。然而,仍然必须启用编译器标志-Ymacro annotations
。