Как выбрать реализацию службы в приложении Grails?

У меня есть несколько служб, реализующих общий интерфейс, и я хочу иметь возможность выбрать одну из них для внедрения в другие службы при запуске моего приложения.

Я попытался сослаться на реализацию сервиса из resources.groovy, как показано ниже, но тогда Spring создает новый экземпляр выбранного сервиса и не связывает его зависимости автоматически.

Как заставить это решение работать? Или есть другой способ?

class MyService {

    Repository repository

    interface Repository {
        void save(...)
    }
}

class MySqlRepositoryService implements MyService.Repository { ... }

class FileRepositoryService implements MyService.Repository { ... }

resources.groovy:

beans = {
    ...
    repository(FileRepositoryService) { }
}
9
задан David Tinker 21 May 2012 в 07:52
поделиться