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
我有一个 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