Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I inject constants with hk2 in jersey 2.0?

How do I inject a constant into some class using HK2 in jersey? With Guice I could have some class like

public class DependsOnFoo {

    @Inject
    public DependsOnFoo(@Named("FOO") String foo) {
        ...
    }
    ...
}

and I would configure it in the injector with something like

bind(String.class).named("FOO").toInstance(new String("foo"))

What's the equivalent, if any, in HK2?

like image 625
agnul Avatar asked Oct 14 '14 15:10

agnul


1 Answers

I'm in the process of learning hk2 coming from Guice. Honestly I am still in the weeds a little with the complexity of hk2 vs the simplicity of guice. I did find this solution to work for me and it is much similar to the Guice builder. This did seem a little more straight forward than having to use the ServiceLocatorUtilitiesclass.

public class IOCMockRestModule extends AbstractBinder
    bind(20000).to(Integer.class).named("MAX_REQUEST_TIMEOUT");
}

And to use the injected value:

@Inject
protected CustomerResource(ICustomerProvider customerProvider, @Named("MAX_REQUEST_TIMEOUT") int maxTimeoutMillis) {
like image 191
Chris Hinshaw Avatar answered Sep 27 '22 19:09

Chris Hinshaw