DI is always a sort of black box where you put some providers in one place and pull some values in other place, but what I don’t like about guice is that instantiation calls also go through that box, so you get rather complex objects instantiated behind the scenes