Here's a workaround public interface LegacyService { void method1(); }
public class LegacyServiceImpl implements LegacyService { public void method1() { ... } public void method2() { ... } } public interface ExtendedService { void method2(); } public interface Hack { public LegacyService getLegacyService(); public ExtendedService getExtendedService(); } AppModule --------- public Hack buildHack(@Autobuild LegacyServiceImpl impl) { return new Hack() { public LegacyService getLegacyService() { return impl; } public ExtendedService getExtendedService() { return new ExtendedService() { public void method2() { return impl.method2(); } }; }; }; } public LegacyService buildLegacyService(Hack hack) { return hack.getLegacyService(); } public ExtendedService buildExtendedService(Hack hack) { return hack.getExtendedService(); } Component --------- @Inject private LegacyService legacyService; @Inject private ExtendedService extendedService;