小编Jaa*_*ers的帖子

Java/Jersey - 使用 ParamInjectionResolver 创建自己的注入解析器 - 奇怪的行为

我正在尝试创建一个注入解析器。我有一个数据类:

public class MyData {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我有以下注释:

@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyDataInject {
}
Run Code Online (Sandbox Code Playgroud)

我的注入解析器如下所示:

public class MyDataInjectionResolver extends ParamInjectionResolver<MyDataInject> {
    public MyDataInjectionResolver () {
        super(MyDataValueFactoryProvider.class);
    }

    @Singleton
    public static class MyDataValueFactoryProvider extends AbstractValueFactoryProvider {
        @Inject
        public MyDataValueFactoryProvider(MultivaluedParameterExtractorProvider provider, ServiceLocator locator) {
            super(provider, locator, Parameter.Source.UNKNOWN);
        }

        @Override
        protected Factory<?> createValueFactory(Parameter parameter) {
            System.out.println(parameter.getRawType());
            System.out.println(Arrays.toString(parameter.getAnnotations()));
            System.out.println("------------------------------------------------------------------");
            System.out.println();

            ... create factory and return ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我绑定如下:

bind(MyDataValueFactoryProvider.class).to(ValueFactoryProvider.class).in(Singleton.class);
bind(MyDataInjectionResolver.class).to(new TypeLiteral<InjectionResolver<MyDataInject>>() {}).in(Singleton.class);
Run Code Online (Sandbox Code Playgroud)

为了简洁起见,我省略了实际工厂的实现。一切正常,但我注意到一些我无法解释的行为。我正在使用以下 JAX-RS 资源进行测试:

@Path("test")
public class Test …
Run Code Online (Sandbox Code Playgroud)

java spring dependency-injection jersey hk2

3
推荐指数
1
解决办法
3944
查看次数

标签 统计

dependency-injection ×1

hk2 ×1

java ×1

jersey ×1

spring ×1