Как получить контекст аннотации. Я смотрю на этот код (copied from here):Получение контекста с помощью AnnotationConfigApplicationContext в Акке Актер
case object Tick
case object Get
@Named
class CountingService {
def increment(count: Int) = count + 1
}
@Named
@Scope("prototype")
class Counter @Inject() (countingService: CountingService) extends Actor {
var count = 0
def receive = {
case Tick => count = countingService.increment(count)
case Get => sender ! count
}
}
@Configuration
class AppConfiguration {
@Bean
def actorSystem = ActorSystem("Akkaspring")
}
object Akkaspring extends App {
val ctx = new AnnotationConfigApplicationContext
ctx.scan("org.typesafe")
ctx.refresh()
val system = ctx.getBean(classOf[ActorSystem])
val counter = system.actorOf(Props().withCreator(ctx.getBean(classOf[Counter])))
counter ! Tick
counter ! Tick
counter ! Tick
implicit val timeout = Timeout(5 seconds)
// wait for the result and print it, then shut down the services
(counter ? Get) andThen {
case count ⇒ println("Count is " + count)
} onComplete { _ => system.shutdown() }
}
, но что, если я хочу использовать счетчик в другой актер например:
class CounterUser extends Actor {
val countingService = system.actorOf(Props().withCreator(ctx.getBean(classOf[Counter])))
def receive = {
case Tick => countingService ! Tick
}
}
как получить контекст, в другой актер?
как я могу впрыскивать другие AnnotationConfigApplicationContext
для тестирования?
Спасибо, я попробую это. есть ли способ, если CounterUser не является Spring bean? – igx