Java Guice:如果多次注入相同的依赖项,是否注入了该依赖项的相同实例?

Java Guice: If you inject the same dependency multiple times, is the same instance of that dependency injected?

我有一个 java jersey 2.x 项目,使用 Guice 作为我的依赖注入框架。我有这个服务

public class AccountService {

private final AccountRepository accountRepository;

@Inject
public AccountService(InMemoryAccountRepositoryImpl inMemoryAccountRepositoryImpl) {
    this.accountRepository = inMemoryAccountRepositoryImpl;
}

假设我创建了另一个服务class,它也注入了InMemoryAccountRepositoryImpl,会注入相同的实例吗?知道这一点对我来说很重要,因为这个实例有一个需要保持一致的内部状态。

默认情况下,Guice returns 每次提供一个值时都会生成一个新实例。此行为可通过范围进行配置。作用域允许您重用实例:在应用程序 (@Singleton)、会话 (@SessionScoped) 或请求 (@RequestScoped) 的生命周期内。 Guice 包含一个 servlet 扩展,它定义了网络应用程序的范围。可以为其他类型的应用程序编写自定义范围。

有关详细信息,请参阅 documentation