Ho bisogno di iniettare da @Autowired implementazione concreta di una classe di servizio.Spring: come iniettare l'implementazione concreta dell'interfaccia?
Interfaccia di servizio:
public interface PostService {
...
}
Implementazione:
@Service("postServiceImpl")
public class PostServiceImpl implements PostService {
...
}
Metodi al servizio sono con annotazione @ Transactional
E ora voglio iniettare postServiceImpl al mio controller - perché ho bisogno utilizzare un metodo dall'implementazione, che non è nell'interfaccia:
@Autowired
@Qualifier("postServiceImpl")
private PostServiceImpl postService;
ottengo NoSuchBeanDefinitionException con il seguente messaggio:
No qualifica di fagioli di tipo [(...) .PostServiceImpl] trovato per dipendenza: previsto con almeno 1 di fagioli che si qualifica come autowire candidato per questa dipendenza.
quando cambio il campo nel mio controller per:
private PostService postService
funziona, ma non posso usare un metodo specifico da PostServiceImpl.
Quindi aggiungerlo all'interfaccia. Qual è il punto di dichiarare le interfacce se si inietta il tipo concreto? –
Hai qualche aspetto applicato a quel bean? Oppure i proxy basati su interfaccia? – fcracker79
@fcracker79 Penso di esserlo, perché i metodi nel servizio sono con l'annotazione @ Transactional. – tomdavies