Мне нужно ввести @Autouired конкретную реализацию класса обслуживания.Весна - как реализовать реализацию интерфейса бетона?
Сервисный интерфейс:
public interface PostService {
...
}
Реализация:
@Service("postServiceImpl")
public class PostServiceImpl implements PostService {
...
}
метода в службе есть с @ транзакционной аннотацией
А теперь я хочу, чтобы ввести postServiceImpl в мой контроллер - потому что мне нужно использовать один метод из реализации, который отсутствует в интерфейсе:
@Autowired
@Qualifier("postServiceImpl")
private PostServiceImpl postService;
Я получаю NoSuchBeanDefinitionException со следующим сообщением:
Нет квалификационная рожкового типа [(...) .PostServiceImpl] нашел для зависимости: ожидается, по крайней мере, один боб, который квалифицируется как autowire кандидат на эту зависимость.
при изменении поля в моем контроллере:
private PostService postService
это работает, но я не могу использовать конкретный метод из PostServiceImpl.
Затем добавьте его в интерфейс. Какой смысл объявлять интерфейсы, если вы вводите конкретный тип? –
У вас есть некоторые аспекты, применяемые к этому бонусу? Или прокси-серверы на основе интерфейса? – fcracker79
@ fcracker79 Я думаю, что у меня есть, потому что методы в сервисе связаны с аннотацией @ Transactional. – tomdavies