Не думаю, что проблема связана с тем, связан ли сервис с классом домена.Контейнер DI ничего об этом не знает.
Если у вас есть такой контроллер:
// grails-app/controllers/demo/SomeController.groovy
package demo
class SomeController {
SomeService someService
def someControllerAction() {
someService.abc()
// ...
}
}
И такая служба ...
// grails-app/services/demo/SomeService.groovy
package demo
class SomeService {
void abc() {
// ...
}
}
Это будет работать нормально.
Почти невозможно сказать наверняка, не видя, что в вашем коде вы делаете неправильно, но одна возможность - это что-то вроде этого, которое не будет работать:
// grails-app/controllers/demo/SomeController.groovy
package demo
class SomeController {
def someControllerAction() {
// This is a local variable, not
// a property and as such will not
// be subjected to dependency injection.
SomeService someService
// ...
someService.abc()
// ...
}
}
Также убедитесь, что имя свойства (someService
в приведенном выше примере) совпадает с именем класса обслуживания, но с первой буквой в нижнем регистре (в более общем случае, убедитесь, что имя свойства соответствует представлению имени свойства имени класса обслуживания, что обычно так же просто, как нижний регистр первой буквы имени класса).