I'm also a bit new to Guice, but I'll give it a shot. One way to avoid
the static injection would be to use an instance of the Utils class:
@Singleton
public class Utils
{
private static Logger log;
@Inject
private TestStatic(Foo myFoo) {
TestStatic.myFoo = myFoo;
}
public static void logFoo(Foo bar) {
log.info(bar.toString());
}
}
And when you initialise your injector, just include:
Injector injector = Guice.createInjector( new AbstractModule() {
@Override
protected void configure()
{
bind(Logger.class).to(ReallyCoolLogImplementation.class);
bind(Utils.class);
}});
injector.getInstance(Utils.class); //force Guice to call the constructor
Now, when you use the Utils class anywhere else in your code, you can
just call Utils.logFoo(myFoo). This seems like an awful lot of work
though.
Jonathan
On 27 Apr 2010, at 10:44, Patrick Bergner wrote:
Hi, I'm new to Guice and lack experience in using it the suggested
(intended) way. I already figured out most of what I need to use Guice
in a relatively simple application and like it very much but one thing
is missing: injecting static dependencies.
I need this in classes that contain only static methods (a utility
class). For the sake of an example, think of a logger that should be
injected and be usable by the static methods. Let's say it looks like
this:
public class Utils {
@Inject private static Logger log;
public static void logFoo( Foo bar )
{
log.info( bar.toString() );
}
}
How do I inject the Logger correctly? My current approach is to use
"requestStaticInjection( Utils.class )" in my Guice module but,
according to the docs, this is discouraged. What other options do I
have?
Thanks for your help!
--
You received this message because you are subscribed to the Google
Groups "google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected]
.
For more options, visit this group at http://groups.google.com/group/google-guice?hl=en
.
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en.