Я думаю, вы, возможно, неправильно поняли что-то о внедрении зависимости. Вам не нужно стараться избегать использования new
в всех случаях ... вы в первую очередь хотите избегать использования new
для создания чего-либо, что вы могли бы захотеть смоделировать для тестирования, и вообще лучше разрешить контейнеру подключать любой класс, который зависит от такого объекта.
Ваш класс Resource
, тем не менее, звучит как простой объект значений, который вы можете легко создать вручную в любом тестировании, которое вы проводите. Он также не зависит от каких-либо услуг ... он просто содержит String
. Так что нет никаких причин пытаться заставить контейнер создать его.
Класс, содержащий метод getResource()
, с другой стороны, вы определенно хотите, чтобы контейнер создавался, потому что вы хотели бы иметь возможность использовать в тестировании что-то, что зависит от этого класса, без необходимости фактически вызывать веб сервис.
Обратите внимание, что если у вас есть класс с конструктором, который принимает обе зависимости, которые вы хотите внедрить контейнером, и параметры, которые известны только во время выполнения, вам необходимо создать промежуточную фабрику некоторого вида с методом, который принимает только время выполнения параметры. С Guice вы можете автоматически создать такую фабрику из интерфейса, используя Assisted Inject (не уверен, работает ли это с RoboGuice, но такую фабричную реализацию легко создать и вручную).