2016-03-26 6 views
0

Я работаю над одним проектом с Spring 4.2.4.RELEASE.Autowiring общих типов не работает [Spring 4+]

Я слышал о новых возможностях Spring 4 (особенно о autowiring of generic types), и я был смущен, когда следующий код не был собран:

@Service 
public interface AuthenticationService<T> { ... } 

public class VKAuthenticationService implements AuthenticationService<VKToken> { ... } 

@RestController 
public class VKAuthenticationController { 
    @Autowired 
    private AuthenticationService<VKToken> service; 
} 

Заранее спасибо за любую помощь.

+2

Не уверен, что .. но вы попробуйте добавить @Service на класс VKAuthenticationService? –

+0

@AnkitBansal, я раньше не пробовал, но теперь он работает нормально – Andrew

ответ

3

Как насчет также объявить @Service на вашем VKAuthenticationService

@Service(name="myService") 
public class VKAuthenticationService implements AuthenticationService<VKToken> { ... } 

и использовать @Autowired и @Qualifier вводить его

@RestController 
public class VKAuthenticationController { 
    @Autowired 
    @Qualifier("myService") 
    private AuthenticationService<VKToken> service; 
} 
+0

делает '@ Service' переход от родителя к ребенку? – Andrew

+0

Что вы имеете в виду? –

+0

при объявлении @Service в интерфейсе, это бесполезно, так как интерфейс не может быть выполнен в экземпляр. –