Что делает Grails create-service? - PullRequest
1 голос
/ 10 июня 2011

Я разрабатываю приложение Grails (с Grails 1.3.7). На уровне сервиса я не использовал команду create-service для создания своего сервиса, а делал это вручную.

В результате мой сервис не был автоматически инициализирован в контроллерах и других сервисах и не обрабатывал транзакции.

Но я не знаю, в чем отличие от создания службы по команде с помощью инструкции? Потому что я не вижу ни одного файла конфигурации, который выясняет это? (Я имею в виду, что в традиционном Spring у нас всегда есть некоторые конфигурационные файлы, которые указывают все компоненты в приложениях, а в Grails нет).

Я хочу исправить эту проблему и зафиксировать свое исправление на сервере SVN, но я не хочу удалять старый сервис и фиксировать новый, созданный командой Grails. Не могли бы вы помочь мне:
1. объяснить, в чем отличие от создания сервиса по команде с помощью руководства?
2. как изменить службу, созданную вручную, на службу, созданную командой, без замены старой?
Большое вам спасибо!

Ответы [ 3 ]

3 голосов
/ 10 июня 2011

объясните, в чем отличие от создания службы по команде с помощью инструкции?

Предполагая, что вы поместили свой сервис в grails-app/services и следовали соглашению об именах, используя постфикс Service Единственное отличие состоит в том, что вы получаете хороший шаблон, который выглядит как

class SomeService {
    boolean transactional = true

    def someMethod() {
    }
}

и автоматически создает модульный тест с именем SomeServiceTests. Вот и все. Кстати, транзакционные значения по умолчанию true, если вы его не включили.

как изменить службу, созданную вручную, на службу, созданную командой, без замены старой?

Ничего не поделаешь, если ты следовал соглашениям. Если вы выполнили эти соглашения и у вас по-прежнему возникают проблемы, обновите свой вопрос, указав более подробную информацию, например, как вы пытаетесь использовать свой сервис и пример своего сервиса.

3 голосов
/ 10 июня 2011

Пока вы помещаете свой класс в каталог grails-app/services, он должен действовать как любой другой сервис (и работать как пружинный компонент).

Если вы введете его в src/java или src/groovy, он не будет считаться службой (и не будет загружен как артефакт службы службой Grails). Это все еще может быть весенний бин, но вам придется вручную добавить его в файл resources.groovy.

0 голосов
/ 12 июня 2011

Также обратите внимание, что автоматическое подключение Grails bean-компонентов должно быть точным, поэтому, если у вас есть MyService и вы хотите использовать его в контроллере, убедитесь, что у вас есть «def myService» или «MyService myService». Если вы предпочитаете разные имена переменных-членов, вы также можете напрямую использовать аннотацию Spring Autowired, хотя я пробовал только автоматическое подключение типов grails (например, службы grails), автоматически подключенных к bean-компоненту, который я объявил в resources.xml

Если вы поместите службы или любой другой bean-компонент в файлы resources.xml или resources.groovy, они также будут автоматически встроенными контроллерами вступления, другими службами и т. Д.

Лучше всего думать о Grails как о «быстрой Spring», поэтому автоматическое подключение, транзакции и т. Д. Поддерживаются конфигурацией Spring и тому подобным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...