dimanche 8 mars 2015

Spring - how to inject concrete interface implementation?

I need to inject by @Autowired concrete implementation of a service class.


Service interface:



public interface PostService {
...
}


Implementation:



@Service("postServiceImpl")
public class PostServiceImpl implements PostService {
...
}


And now I want to inject postServiceImpl to my controller - because I need to use one method from the implementation, that is not in the interface:



@Autowired
@Qualifier("postServiceImpl")
private PostServiceImpl postService;


I get NoSuchBeanDefinitionException with the following message:



No qualifying bean of type [ (...) .PostServiceImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency.



when I change the field in my controller to:



private PostService postService


it works, but I can't use a specific method from PostServiceImpl.


Aucun commentaire:

Enregistrer un commentaire