public class AppConfig extends GinModule {
@Provides
@Singleton
public DatabaseService provideDatabaseService() {
return new DatabaseServiceImpl();
}
}
public class UserService {
private final DatabaseService databaseService;
@Inject
public UserService(DatabaseService databaseService) {
this.databaseService = databaseService;
}
public void addUser(User user) {
databaseService.addUser(user);
}
}
public class Application {
public static void main(String[] args) {
GinInjector injector = Gin.createInjector(new AppConfig());
UserService userService = injector.getInstance(UserService.class);
User newUser = new User("John", "Doe");
userService.addUser(newUser);
}
}