2014-09-04 3 views
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); 
} 

После этого пользовательский репозиторий в моем классе ресурсов является обязательным корр. Тем не менее, userIdToUserNameTable в UserAuthorizationRepositoryImpl имеет значение 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

Это не работает, так как теперь пользовательский репозиторий также становится нулевым – user3905440

Смежные вопросы