Проводка bean-компонентов на основе файла свойств - PullRequest
1 голос
/ 23 марта 2012

Я читал различные сообщения, такие как:

ссылка1 ссылка2

, но ни один из них не работал для меня.1010 * Вот мой текущий (неработающий) resources.groovy файл:

beans = {

    def instance = Class.forName(grailsApplication.config.foo.bar)
    exampleService(instance)
}

значение foo.bar в файле свойств - это имя класса (который реализует ExampleService).

Можно ли это сделать?

1 Ответ

0 голосов
/ 23 марта 2012

В предыдущем проекте мы использовали разные классы для bean-компонентов в зависимости от переменной окружения. Там мы начнем с интерфейса службы, чтобы найти класс реализации, который мы хотим использовать, основываясь на соглашении об именах, как показано в фрагменте кода ниже.

Единственная разница с вашим кодом в том, что мы используем загрузчик классов интерфейса службы для получения класса реализации. Другой вариант, конечно, что grailsApplication.config.foo.bar не содержит правильное значение.

В каталоге grails-app / conf / spring наш bean-файл содержал следующий код для загрузки правильного класса реализации:

beans = {
    addressService(getImplementation(AddressService))
    appointmentService(getImplementation(AppointmentService))
}

def getImplementation(Class service) {
    if (CH.config.mockAllServices == 'true' || CH.config."mock${service.simpleName}" == 'true') {
        return service.classLoader.loadClass(service.name + 'Mock')
    }
    return service.classLoader.loadClass(service.name + 'Impl')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...