Java Guice:如果您多次注入相同的依赖项,那么是否会注入相同的依赖项实例?

时间:2018-10-01 21:49:45

标签: java dependency-injection jersey jax-rs guice

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

public class AccountService {

private final AccountRepository accountRepository;

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

让我们创建另一个也注入InMemoryAccountRepositoryImpl的服务类,是否将注入相同的实例?对我来说很重要,因为此实例的内部状态必须保持一致。

1 个答案:

答案 0 :(得分:2)

默认情况下,Guice每次提供值都会返回一个新实例。可通过范围配置此行为。范围使您可以重用实例:在应用程序(@Singleton),会话(@SessionScoped)或请求(@RequestScoped)的生存期内。 Guice包含一个Servlet扩展,它定义了Web应用程序的范围。可以为其他类型的应用程序编写自定义范围。

有关更多信息,请参见documentation