Расширяйте услуги с помощью определенного интерфейса

#grails #grails-2.0

Вопрос:

Можно ли получить все расширенные сервисы из определенного интерфейса в grails

Таким образом, я могу собрать их в рамках одной службы

Ответ №1:

Да, я думаю, вы можете сделать это, автоматически подключившись к List вводу. Допустим, у вас есть три реализации интерфейса BaseService в grails-app/services as:

grails-приложение/услуги/пример приложения/BaseService.groovy

 package exampleapp  interface BaseService { }   

grails-приложение/услуги/пример приложения/OneImplService.groovy

 package exampleapp  class OneImplService implements BaseService { }  

grails-приложение/услуги/пример приложения/TwoImplService.groovy

 package exampleapp  class TwoImplService implements BaseService { }  

Теперь вы можете внедрить все реализации BaseSerive следующего:

grails-приложение/сервисы/exampleapp/TestService.groovy

 package exampleapp  import org.springframework.beans.factory.annotation.Autowired  class TestService {   @Autowired  Listlt;BaseServicegt; baseServiceList   void doSomething() {  assert baseServiceList.size() == 2  } }  

Пожалуйста, обратите внимание, что приведенный выше пример протестирован с помощью веб-приложения Grails 5. Но я был бы удивлен, если бы это не работало в предыдущих версиях Grails.