Grails : How do you make services available inside services?
I am currently running into an issue where I am attempting to use a service within a service however the service is null
class ApplicationService{
def someService
def someMethod(){
someService.method()//null on someService
}
}
Is there additional wiring that I need to perform for this to work? Thanks in advance for your help.
grails
add a comment |
I am currently running into an issue where I am attempting to use a service within a service however the service is null
class ApplicationService{
def someService
def someMethod(){
someService.method()//null on someService
}
}
Is there additional wiring that I need to perform for this to work? Thanks in advance for your help.
grails
What type is someService? Try putting that type instead ofdef
. Also, is this ApplicationService class in the services directory? If not, you won't get automatic dependency injection.
– billjamesdev
Nov 16 at 21:21
That doesn't work for me.
– mcroteau
Nov 17 at 0:40
one of your "services" is not a service at all
– injecteer
Nov 20 at 14:30
add a comment |
I am currently running into an issue where I am attempting to use a service within a service however the service is null
class ApplicationService{
def someService
def someMethod(){
someService.method()//null on someService
}
}
Is there additional wiring that I need to perform for this to work? Thanks in advance for your help.
grails
I am currently running into an issue where I am attempting to use a service within a service however the service is null
class ApplicationService{
def someService
def someMethod(){
someService.method()//null on someService
}
}
Is there additional wiring that I need to perform for this to work? Thanks in advance for your help.
grails
grails
asked Nov 16 at 0:27
mcroteau
6701728
6701728
What type is someService? Try putting that type instead ofdef
. Also, is this ApplicationService class in the services directory? If not, you won't get automatic dependency injection.
– billjamesdev
Nov 16 at 21:21
That doesn't work for me.
– mcroteau
Nov 17 at 0:40
one of your "services" is not a service at all
– injecteer
Nov 20 at 14:30
add a comment |
What type is someService? Try putting that type instead ofdef
. Also, is this ApplicationService class in the services directory? If not, you won't get automatic dependency injection.
– billjamesdev
Nov 16 at 21:21
That doesn't work for me.
– mcroteau
Nov 17 at 0:40
one of your "services" is not a service at all
– injecteer
Nov 20 at 14:30
What type is someService? Try putting that type instead of
def
. Also, is this ApplicationService class in the services directory? If not, you won't get automatic dependency injection.– billjamesdev
Nov 16 at 21:21
What type is someService? Try putting that type instead of
def
. Also, is this ApplicationService class in the services directory? If not, you won't get automatic dependency injection.– billjamesdev
Nov 16 at 21:21
That doesn't work for me.
– mcroteau
Nov 17 at 0:40
That doesn't work for me.
– mcroteau
Nov 17 at 0:40
one of your "services" is not a service at all
– injecteer
Nov 20 at 14:30
one of your "services" is not a service at all
– injecteer
Nov 20 at 14:30
add a comment |
2 Answers
2
active
oldest
votes
I was able to do this by using the grailsApplication and loading the service.
if(!someService){
someService = grailsApplication.classLoader.loadClass("org.company.SomeService").newInstance()
}
1
This is not a good way to inject a service. CallingnewInstance()
will not give you all the autowired parts of the service class you're expecting. Where in your project structure isApplicationService
located? Can you give the path?
– Trebla
Nov 19 at 15:46
add a comment |
The most possible explanation i here is, the class behind SomeService is not a Grails service artefact thus you cannot just inject it like that.
Double check on the source code whether that class is really a service or just a Groovy class in src/groovy. The framework will treat these two differently.
Also do not attempt to inject service with manually creating the instance like your answer, that is not the correct way to do dependency injection in Grails (or in Spring).
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53329734%2fgrails-how-do-you-make-services-available-inside-services%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
I was able to do this by using the grailsApplication and loading the service.
if(!someService){
someService = grailsApplication.classLoader.loadClass("org.company.SomeService").newInstance()
}
1
This is not a good way to inject a service. CallingnewInstance()
will not give you all the autowired parts of the service class you're expecting. Where in your project structure isApplicationService
located? Can you give the path?
– Trebla
Nov 19 at 15:46
add a comment |
I was able to do this by using the grailsApplication and loading the service.
if(!someService){
someService = grailsApplication.classLoader.loadClass("org.company.SomeService").newInstance()
}
1
This is not a good way to inject a service. CallingnewInstance()
will not give you all the autowired parts of the service class you're expecting. Where in your project structure isApplicationService
located? Can you give the path?
– Trebla
Nov 19 at 15:46
add a comment |
I was able to do this by using the grailsApplication and loading the service.
if(!someService){
someService = grailsApplication.classLoader.loadClass("org.company.SomeService").newInstance()
}
I was able to do this by using the grailsApplication and loading the service.
if(!someService){
someService = grailsApplication.classLoader.loadClass("org.company.SomeService").newInstance()
}
answered Nov 16 at 3:04
mcroteau
6701728
6701728
1
This is not a good way to inject a service. CallingnewInstance()
will not give you all the autowired parts of the service class you're expecting. Where in your project structure isApplicationService
located? Can you give the path?
– Trebla
Nov 19 at 15:46
add a comment |
1
This is not a good way to inject a service. CallingnewInstance()
will not give you all the autowired parts of the service class you're expecting. Where in your project structure isApplicationService
located? Can you give the path?
– Trebla
Nov 19 at 15:46
1
1
This is not a good way to inject a service. Calling
newInstance()
will not give you all the autowired parts of the service class you're expecting. Where in your project structure is ApplicationService
located? Can you give the path?– Trebla
Nov 19 at 15:46
This is not a good way to inject a service. Calling
newInstance()
will not give you all the autowired parts of the service class you're expecting. Where in your project structure is ApplicationService
located? Can you give the path?– Trebla
Nov 19 at 15:46
add a comment |
The most possible explanation i here is, the class behind SomeService is not a Grails service artefact thus you cannot just inject it like that.
Double check on the source code whether that class is really a service or just a Groovy class in src/groovy. The framework will treat these two differently.
Also do not attempt to inject service with manually creating the instance like your answer, that is not the correct way to do dependency injection in Grails (or in Spring).
add a comment |
The most possible explanation i here is, the class behind SomeService is not a Grails service artefact thus you cannot just inject it like that.
Double check on the source code whether that class is really a service or just a Groovy class in src/groovy. The framework will treat these two differently.
Also do not attempt to inject service with manually creating the instance like your answer, that is not the correct way to do dependency injection in Grails (or in Spring).
add a comment |
The most possible explanation i here is, the class behind SomeService is not a Grails service artefact thus you cannot just inject it like that.
Double check on the source code whether that class is really a service or just a Groovy class in src/groovy. The framework will treat these two differently.
Also do not attempt to inject service with manually creating the instance like your answer, that is not the correct way to do dependency injection in Grails (or in Spring).
The most possible explanation i here is, the class behind SomeService is not a Grails service artefact thus you cannot just inject it like that.
Double check on the source code whether that class is really a service or just a Groovy class in src/groovy. The framework will treat these two differently.
Also do not attempt to inject service with manually creating the instance like your answer, that is not the correct way to do dependency injection in Grails (or in Spring).
answered Nov 28 at 5:40
Del Fianto
112
112
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53329734%2fgrails-how-do-you-make-services-available-inside-services%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
What type is someService? Try putting that type instead of
def
. Also, is this ApplicationService class in the services directory? If not, you won't get automatic dependency injection.– billjamesdev
Nov 16 at 21:21
That doesn't work for me.
– mcroteau
Nov 17 at 0:40
one of your "services" is not a service at all
– injecteer
Nov 20 at 14:30