What actually happens when we do def someService
? Does the service code get linked to the controller code?

- 167,322
- 27
- 342
- 338

- 10,103
- 10
- 55
- 90
3 Answers
Grails uses spring IOC, your controllers and services are managed as spring beans, when you define a service inside a controller, spring will inject the service inside the controller, code does not get linked in anyway, just reference to service will be set. Though its not a much expensive operation, you would not want to define service dependencies that are not used to keep the code clean

- 4,008
- 1
- 22
- 32
I think under the hood it's the same process as Spring's @Autowired
annotation, so you pay a bit of a performance penalty on start up but I don't think it's significant.
There's another stackoverflow question on the subject here.

- 1
- 1

- 3,594
- 4
- 29
- 54
Does the service code get linked to the controller code?
That does not make sense.
Actually services in grails are singleton by default.So if you inject a Service by def serviceName
it wont create a new service object but a reference to same old service object.
So its not expensive of course.
But if in a service there is a property static session="prototype"
or some non-singleton like this.Then it is expensive .

- 3,712
- 10
- 41
- 74