The default behaviour of Tapestry-IOC is that a service is a singleton. In other words only a single instance is created and every time the same instance is injected. So in your case, different classes will share the same EventTracker service instance, and they will be able to see the same events. One important consideration here is that the same instance is also shared between threads, so in a multi-threading program (which include any web applications) appropriate precautions must be done to prevent race conditions. You can change default scope of the service to be per-thread, (see @Scope annotation), in this case each thread will get a separate instance of the service.
On Thu, Oct 5, 2017 at 9:24 PM, Tyler Wilcock <twilc...@widen.com> wrote: > Question about Tapestry's IoC system. Let's pretend I register a service > called EventTracker.java. EventTracker has a private List field containing > a list of Events, a method to add those events, and a method to retrieve > those events. Now let's say I have another class that @Inject's that > EventTracker service and records a bunch of events. > > If I @Inject the EventTracker service into yet another class, can I read > those events that the previous class added? Or will it be an empty slate? > Generally, my question is this: do services save their state in between > injections in different classes? >