私は同様の問題を抱えていて、次のようなものを作りました:
ラッパー:
class LoggedUserProvider {
private User user;
User getLoggedUser() {
return user;
}
void setLoggedUser(User user) {
this.user = user;
}
}
モジュール:
@Module(injects = Endpoint.class)
public class AuthenticationModule {
@Provides
@Singleton
LoggedUserProvider provideLoggedUserProvider() {
return new LoggedUserProvider();
}
}
その後、@Inject LoggedUserProvider
getter/setter を使用して、現在ログインしているユーザーを設定できます。
また
ラッパーなしでこれを作成したい場合は、このモジュールを作成する必要があると思います:
@Module(injects = Endpoint.class)
public class AuthenticationModule {
@Provides
User provideUser() {
return null;
}
}
およびこれは承認前にこれを含めないでください:
@Module(overrides = true)
public class CurrentUserModule {
User currentUser;
public CurrentUserModule(User currentUser) {
this.currentUser = currentUser;
}
@Provides
@Singleton
User provideUser() {
return currentUser;
}
}
次に、承認後にこのモジュールを objectGraph に追加し (ログインしたユーザーをコンストラクターに渡します)、グラフ全体を再作成します。
それはただの考えです、私はこのようにしたことはありません。