Я пытаюсь внедрить служебную зависимость в конструктор для другой службы (см. Пример кода ниже).Однако исключение NoSuchBeanDefinitionException генерируется, когда я пытаюсь назначить переменную api, даже если переменная bean-компонента установлена правильно.
Стоит также упомянуть, что это происходит, когда я расширяю этот сервис и инициализирую дочерний сервис.
Тогда у меня вопрос, как мне правильно внедрить сервис зависимостей в мой классозависимыйна настройку в моем Config.groovy?
class MyService {
def api
public MyService() {
def beanString = ConfigurationHolder.config.api
def bean = ApplicationHolder.application.getMainContext().getBean(GrailsNameUtils.getPropertyName(beanString))
this.api = bean
}
}
EDIT : прояснить мою идею.У меня есть два API: один, один XML и один JSON, которые обслуживают одни и те же данные, но с разными представлениями.Тем не менее, я хочу иметь возможность установить API для использования в файле конфигурации, например, строку с именем API.
Моя идея состоит в том, чтобы иметь общий интерфейс для доступного API (ApiInterface), а затемкогда мой сервис, использующий API, инициализируется, задайте для переменной экземпляра настроенный API.
В дополнение к этому я хочу иметь возможность настраивать специфичные для службы настройки, то есть настройки для каждой службы, которая внедряет API.в файле конфигурации, который устанавливает, какой API использовать.например,
Config.groovy</p>
<p>firstService {
api = "xml"
}
secondService {
api = "json"
}