it does more than constructor injection