Лучшее решение, которое я нашел для этого, это использовать Псевдонимы бобов Spring . В основном вам нужно:
1) Создать интерфейс в src / groovy (MyService.groovy
)
2) Внедряйте свои услуги там, где они вам нужны:
class MyController {
MyService myService
}
3) Создайте свои обычные службы, реализующие этот интерфейс (ImplOneService.groovy
, ImplTwoService.groovy
)
4) Добавьте запись в resources.groovy, где вы определяете, какую реализацию использовать (в конце концов, тестирование для среды или что-то еще, что вам нужно):
beans = {
if (...development, useFTP, etc...) {
springConfig.addAlias 'myService', 'ImplOneService'
} else {
springConfig.addAlias 'myService', 'ImplTwoService'
}
}
Полные источники здесь
Мои комментарии: Использование интерфейсов в groovy действительно кажется чем-то вроде «я хочу придерживаться некоторых java-вещей, с которыми мне удобнее». В этом случае строгая типизация. Но это отличная фраза: «Не беспокойтесь, вы можете придерживаться Java, если хотите».