Injection order of “MembersInjector” and a regular “Method”-Injection wrong?












0















I am using google-guice since a couple of days, and I am getting more and more impressed.



I created a MemberInjector to easily integrate the logging framework SLF4J, just with a additional annotation. That means instead of using always the long term:



private static final Logger LOG = LoggerFactory.getLogger(MyClass.class);


I am now just using:



@Log
Logger LOG;


This is really great, BUT:

I am also using a method-injection as a kind of starter function like this in the same class, AND if I access to the LOG instance there, it causes a NPE! Because it is not injected yet.



@Inject
public void start() {
//And here is the problem...
LOG.info("in start") //causes NPE, cause LOG is not injected yet
}


If I use the LOG instance in another (non-injected) method it works perfectly,.



Is there a way to change the injection order or is it possible to tell guice to inject the MemberInjector earlier? Cause I really would like to use the logging also in the method-injection part.



Thank for any hint.










share|improve this question









New contributor




Tony is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





















  • Why do you use Inject on a paremeterless method? It should be placed on a constructor or a setter ...

    – Jan Galinski
    14 hours ago
















0















I am using google-guice since a couple of days, and I am getting more and more impressed.



I created a MemberInjector to easily integrate the logging framework SLF4J, just with a additional annotation. That means instead of using always the long term:



private static final Logger LOG = LoggerFactory.getLogger(MyClass.class);


I am now just using:



@Log
Logger LOG;


This is really great, BUT:

I am also using a method-injection as a kind of starter function like this in the same class, AND if I access to the LOG instance there, it causes a NPE! Because it is not injected yet.



@Inject
public void start() {
//And here is the problem...
LOG.info("in start") //causes NPE, cause LOG is not injected yet
}


If I use the LOG instance in another (non-injected) method it works perfectly,.



Is there a way to change the injection order or is it possible to tell guice to inject the MemberInjector earlier? Cause I really would like to use the logging also in the method-injection part.



Thank for any hint.










share|improve this question









New contributor




Tony is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





















  • Why do you use Inject on a paremeterless method? It should be placed on a constructor or a setter ...

    – Jan Galinski
    14 hours ago














0












0








0








I am using google-guice since a couple of days, and I am getting more and more impressed.



I created a MemberInjector to easily integrate the logging framework SLF4J, just with a additional annotation. That means instead of using always the long term:



private static final Logger LOG = LoggerFactory.getLogger(MyClass.class);


I am now just using:



@Log
Logger LOG;


This is really great, BUT:

I am also using a method-injection as a kind of starter function like this in the same class, AND if I access to the LOG instance there, it causes a NPE! Because it is not injected yet.



@Inject
public void start() {
//And here is the problem...
LOG.info("in start") //causes NPE, cause LOG is not injected yet
}


If I use the LOG instance in another (non-injected) method it works perfectly,.



Is there a way to change the injection order or is it possible to tell guice to inject the MemberInjector earlier? Cause I really would like to use the logging also in the method-injection part.



Thank for any hint.










share|improve this question









New contributor




Tony is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












I am using google-guice since a couple of days, and I am getting more and more impressed.



I created a MemberInjector to easily integrate the logging framework SLF4J, just with a additional annotation. That means instead of using always the long term:



private static final Logger LOG = LoggerFactory.getLogger(MyClass.class);


I am now just using:



@Log
Logger LOG;


This is really great, BUT:

I am also using a method-injection as a kind of starter function like this in the same class, AND if I access to the LOG instance there, it causes a NPE! Because it is not injected yet.



@Inject
public void start() {
//And here is the problem...
LOG.info("in start") //causes NPE, cause LOG is not injected yet
}


If I use the LOG instance in another (non-injected) method it works perfectly,.



Is there a way to change the injection order or is it possible to tell guice to inject the MemberInjector earlier? Cause I really would like to use the logging also in the method-injection part.



Thank for any hint.







java guice






share|improve this question









New contributor




Tony is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




Tony is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited Jan 18 at 20:24







Tony













New contributor




Tony is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked Jan 18 at 17:27









TonyTony

11




11




New contributor




Tony is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Tony is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Tony is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.













  • Why do you use Inject on a paremeterless method? It should be placed on a constructor or a setter ...

    – Jan Galinski
    14 hours ago



















  • Why do you use Inject on a paremeterless method? It should be placed on a constructor or a setter ...

    – Jan Galinski
    14 hours ago

















Why do you use Inject on a paremeterless method? It should be placed on a constructor or a setter ...

– Jan Galinski
14 hours ago





Why do you use Inject on a paremeterless method? It should be placed on a constructor or a setter ...

– Jan Galinski
14 hours ago












0






active

oldest

votes











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
});


}
});






Tony is a new contributor. Be nice, and check out our Code of Conduct.










draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54258790%2finjection-order-of-membersinjector-and-a-regular-method-injection-wrong%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes








Tony is a new contributor. Be nice, and check out our Code of Conduct.










draft saved

draft discarded


















Tony is a new contributor. Be nice, and check out our Code of Conduct.













Tony is a new contributor. Be nice, and check out our Code of Conduct.












Tony is a new contributor. Be nice, and check out our Code of Conduct.
















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.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54258790%2finjection-order-of-membersinjector-and-a-regular-method-injection-wrong%23new-answer', 'question_page');
}
);

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







Popular posts from this blog

Liquibase includeAll doesn't find base path

How to use setInterval in EJS file?

Petrus Granier-Deferre