Skip to content

Instantly share code, notes, and snippets.

@zerosum
Created April 29, 2020 12:24
Show Gist options
  • Save zerosum/4fbd86ea63d9a6afa0cbd8974aa191c6 to your computer and use it in GitHub Desktop.
Save zerosum/4fbd86ea63d9a6afa0cbd8974aa191c6 to your computer and use it in GitHub Desktop.
airframe-di session sample
2020-04-29 21:18:53.719+0900 info [LifeCycleManager] [session:35d176f7] Starting a new lifecycle ... - (LifeCycleManager.scala:260)
2020-04-29 21:18:53.741+0900 info [LifeCycleManager] [session:35d176f7] ======== STARTED ======== - (LifeCycleManager.scala:264)
2020-04-29 21:18:54.584+0900 info [LifeCycleManager] [session:35d176f7 -> session:18025ced] Starting a new lifecycle ... - (LifeCycleManager.scala:260)
2020-04-29 21:18:54.585+0900 info [LifeCycleManager] [session:35d176f7 -> session:18025ced] ======== STARTED ======== - (LifeCycleManager.scala:264)
2020-04-29 21:18:54.588+0900 info [Inner] init... - (Main.scala:36)
2020-04-29 21:18:54.590+0900 info [Inner] [1] exec... - (Main.scala:44)
2020-04-29 21:18:54.590+0900 info [LifeCycleManager] [session:35d176f7 -> session:18025ced] Stopping the lifecycle ... - (LifeCycleManager.scala:268)
2020-04-29 21:18:54.593+0900 info [Inner] shutdown... - (Main.scala:40)
2020-04-29 21:18:54.594+0900 info [LifeCycleManager] [session:35d176f7 -> session:18025ced] The lifecycle has stopped. - (LifeCycleManager.scala:272)
2020-04-29 21:18:54.594+0900 info [LifeCycleManager] [session:35d176f7 -> session:1af146] Starting a new lifecycle ... - (LifeCycleManager.scala:260)
2020-04-29 21:18:54.595+0900 info [LifeCycleManager] [session:35d176f7 -> session:1af146] ======== STARTED ======== - (LifeCycleManager.scala:264)
2020-04-29 21:18:54.595+0900 info [Inner] init... - (Main.scala:36)
2020-04-29 21:18:54.595+0900 info [Inner] [2] exec... - (Main.scala:44)
2020-04-29 21:18:54.595+0900 info [LifeCycleManager] [session:35d176f7 -> session:1af146] Stopping the lifecycle ... - (LifeCycleManager.scala:268)
2020-04-29 21:18:54.595+0900 info [Inner] shutdown... - (Main.scala:40)
2020-04-29 21:18:54.596+0900 info [LifeCycleManager] [session:35d176f7 -> session:1af146] The lifecycle has stopped. - (LifeCycleManager.scala:272)
2020-04-29 21:18:54.596+0900 info [LifeCycleManager] [session:35d176f7 -> session:4da602fc] Starting a new lifecycle ... - (LifeCycleManager.scala:260)
2020-04-29 21:18:54.596+0900 info [LifeCycleManager] [session:35d176f7 -> session:4da602fc] ======== STARTED ======== - (LifeCycleManager.scala:264)
2020-04-29 21:18:54.597+0900 info [Inner] init... - (Main.scala:36)
2020-04-29 21:18:54.597+0900 info [Inner] [3] exec... - (Main.scala:44)
2020-04-29 21:18:54.597+0900 info [LifeCycleManager] [session:35d176f7 -> session:4da602fc] Stopping the lifecycle ... - (LifeCycleManager.scala:268)
2020-04-29 21:18:54.597+0900 info [Inner] shutdown... - (Main.scala:40)
2020-04-29 21:18:54.598+0900 info [LifeCycleManager] [session:35d176f7 -> session:4da602fc] The lifecycle has stopped. - (LifeCycleManager.scala:272)
2020-04-29 21:18:54.598+0900 info [LifeCycleManager] [session:35d176f7] Stopping the lifecycle ... - (LifeCycleManager.scala:268)
import wvlet.airframe._
object Main extends App {
log.init
newDesign.build[Outer] { outer =>
outer.run()
}
}
trait Outer {
private val session = bind[Session]
def run(): Unit = {
val innerDesign = newDesign
.bind[Inner].toSingleton
.onInit(_.init())
.onShutdown(_.shutdown())
for (i <- 1 to 3) {
session.withChildSession(innerDesign) { innerSession =>
val inner = innerSession.build[Inner]
inner.exec(i)
}
}
}
}
trait Inner {
private val logger = wvlet.log.Logger.of[Inner]
def init(): Unit = {
logger.info("init...")
}
def shutdown(): Unit = {
logger.info("shutdown...")
}
def exec(i: Int): Unit = {
logger.info(s"[$i] exec...")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment