If we want to create only one instance of the class, then the @Singleton annotation can be used to mark the implementation class. As long as a the singleton object lives, the injector lives in context, but in the same application, it is possible to have multiple injectors, and in that case, each injector is associated with a different instance of a singleton-scoped object:
@Singletonpublic class DatabaseConnection{ public void connectDatabase(){ } public void disconnectDatabase(){ }}
Another way to configure a scope is by using a bind statement in the module:
public class ApplicationModule extends AbstractModule{ @Override protected void configure() { //bind service to implementation class bind(NotificationService.class).to(SMSService.class).in(Singleton.class); ...