Это корень композиции моего приложения:
MutablePicoContainer container = new DefaultPicoContainer();
container.addComponent(LDAPManager.class);
container.addComponent(LoginDelayer.class);
container.addComponent(CommandFactory.class);
container.addComponent(FileSystem.class);
container.addComponent(ProtocolFactory.class);
container.addComponent(new TemporaryFolder(container.getComponent(FileSystem.class), new File("abc")));
container.addComponent(ConnectedClientFactory.class);
container.addComponent(Server.class);
Server server = container.getComponent(Server.class);
Это мило и модно, но все же есть проблема: при тестировании системы я, как правило, хочу либо смоделировать, либо пропустить другую реализациютолько одна или две из этих зависимостей.Было бы идеально, если бы я мог просто получить код, показанный выше, плюс
container.addComponent(new TemporaryFolder(container.getComponent(FileSystem.class), new File("def")));
и позволить контейнеру понять, что я хочу заменить исходный экземпляр TemporaryFolder
на новый.Есть ли встроенные средства для этого в пико-контейнере (или других облегченных контейнерах Java)?Если нет, то каков стандартный подход к решению этой проблемы?
Спасибо