注入通过hk2 + jersey创建的对象将返回null

时间:2014-09-04 06:13:25

标签: jersey jersey-2.0 hk2

我有以下资源类

@Path("/helloworld")
public class HelloWorldResource {
@Inject
private UserAuthorizationRepository userRepository;

@GET
public Response sayHello(@Context UriInfo uriInfo) 

以下是我对UserAuthorizationRepository的实现

public class UserAuthorizationRepositoryImpl implements UserAuthorizationRepository { 
@Inject
private MyUserIdToUserNameTable userIdToUserNameTable;
public String getUserName(Long userId) {
    userNameToUserIdTable.getUserName(userId)
}

我已将以下活页夹注册到ResourceConfig

public class RepositoryBinder extends AbstractBinder {
@Override
protected void configure() {
    bind(new UserAuthorizationRepositoryImpl()).to(UserAuthorizationRepository.class);
    bind(new MyUserIdToUserNameTable()).to(UserIdToUserNameTable.class);
}

在此之后,我的资源类中的userRepository正确绑定,但UserAuthorizationRepositoryImpl中的userIdToUserNameTable为null。

有谁知道原因?提前谢谢!

1 个答案:

答案 0 :(得分:0)

首先,看起来你自己创建UserAuthorizationRepositoryImpl而不是让hk2 / Jersey创建它。您可能想尝试:

public class RepositoryBinder extends AbstractBinder {
@Override
protected void configure() {
    bind(UserAuthorizationRepositoryImpl.class).to(UserAuthorizationRepository.class);
    bind(MyUserIdToUserNameTable.class).to(UserIdToUserNameTable.class);
}

这将允许hk2 / Jersey创建类,并正确地注入它们。