1

我有以下资源类

@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 为空。

有谁知道原因?先感谢您!

4

1 回答 1

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 创建类,并正确注入它们。

于 2014-09-04T19:33:26.113 回答