我正在使用Java 8,Dropwizard,Guice和Okta。自定义主体的注入应该如何发生?从Application.initialized
调用以下代码时有效,但我正在寻找Guice方式:
// Bind our custom principal to the @Auth annotation
environment.jersey().register(
new AuthValueFactoryProvider.Binder<>(AccessTokenPrincipal.class));
我尝试了此模块,然后将其捆绑在应用程序中,但没有运气:
public class AuthModule extends AbstractModule {
@Override
protected void configure() {
}
@Provides
public AuthValueFactoryProvider.Binder<AccessTokenPrincipal> providesPrincipalBinder() {
return new AuthValueFactoryProvider.Binder<>(AccessTokenPrincipal.class);
}
}
答案 0 :(得分:0)
签出@Provides的文档:“方法的返回类型绑定到其返回值”。因此,您应该提供AccessTokenPrincipal本身,而不是提供活页夹*
*如果具有@Inject注释的AccessTokenPrincipal构造函数,这将由Guice自动完成。 ATP构造函数还必须考虑其所有依赖性。
[EDIT]我只是通过AuthValueFactoryProvider查看的。这些看起来很臭,但是您可能需要做的就是创建活页夹(就像您在上面所做的那样)。然后使用#getProvider,然后使用bind(ATP.class).toProvider(new<>AVFP(...).Binder<>(ATP).getProvider())