2014-09-04 85 views
0

我有以下的資源類注入目標的零

@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綁定corr但是,實際上,UserAuthorizationRepositoryImpl中的userIdToUserNameTable是null。

有誰知道原因?先謝謝你!

回答

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創建類並正確注入它們。

+0

這不起作用,因爲現在userRepository也變爲null – user3905440 2014-09-05 02:30:18