Имею кастомный квалификатор, суть в том что есть три бина помеченные квалификатором. Но почему-то один из них не находит
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.abraham.dms.services.CRUDOperationServices<?>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.abraham.dms.qualifier.EntityTitle(value=PRODUCTS)}
БД и Entity проверил, там все в порядке. Аналогичных проблем не нашел в интернете. Это бин который не находит:
@Repository@EntityTitle(value = Titles.PRODUCTS)public class ProductDao implements RepositoryDAO<ProductEntity> {
private Logger productLogger =
LoggerFactory.getLogger(ProductDao.class);
private final SessionFactory sessionFactory;
@Autowired
public ProductDao(final SessionFactory sf) {
this.sessionFactory = sf;
}
@Override
public void insert(final ProductEntity object) {
Session session = sessionFactory.getCurrentSession();
session.persist(object);
productLogger.info("Insert product " + object);
}
@Override
public void update(final ProductEntity object) {
Session session = sessionFactory.getCurrentSession();
session.update(object);
productLogger.info("Update product " + object);
}
@Override
public void remove(final long id) {
Session session = sessionFactory.getCurrentSession();
ProductEntity product = session.load(ProductEntity.class, id);
if (product != null) {
session.delete(product);
}
productLogger.info("Delete product " + product);
}
@SuppressWarnings("unchecked")
@Override
public List<ProductEntity> readAll() {
final String query = "from "
+ ProductEntity.class.getSimpleName();
Session session = sessionFactory.getCurrentSession();
List<ProductEntity> productList = session.createQuery(query).list();
for (ProductEntity p : productList) {
productLogger.info("Item:", p);
}
return productList;
}
@Override
public ProductEntity getObjectId(final long id) {
Session session = sessionFactory.getCurrentSession();
ProductEntity product = session.load(ProductEntity.class, id);
productLogger.info("Order product " + product);
return product;
}
}
@Service@RepositoryTitles(value = RepTitle.PRODUCTSERVICE)public class ProductService implements CRUDOperationServices<ProductEntity> {
private final CRUDOperationServices product;
@Autowired
public ProductService(@EntityTitle(value = Titles.PRODUCTS)
final CRUDOperationServices p) {
this.product = p;
}
@Override
@Transactional
public void insert(final ProductEntity object) {
product.insert(object);
}
@Override
@Transactional
public void update(final ProductEntity object) {
product.update(object);
}
@Override
@Transactional
public void remove(final long id) {
product.remove(id);
}
@Override
@Transactional
public List<ProductEntity> readAll() {
return product.readAll();
}
@Override
@Transactional
public ProductEntity getObjectId(final long id) {
return (ProductEntity) product.getObjectId(id);
}
Еще два бина построены по аналогичному образу. Но с ними проблем нет. В чем может быть причина?
Квалификатор:
@Target({
ElementType.FIELD,
ElementType.METHOD,
ElementType.TYPE,
ElementType.PARAMETER}) @Qualifier public @interface EntityTitle {Titlesvalue();}
public enum Titles { CLIENTS,
MATERIALS,
PRODUCT,
PRODUCTCOMPONENTS,
ORDERS,
ORDERCOMPONENTS }
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В общем есть что то типа конструктора PDF, заполняем поля и по нажатию на "предварительный просмотр" данные из этих полей должны быть в PDF-ке
ЗдравствуйтеНедавно все-таки придумал, как вводить текст автоматизированно через Robot
Приветствую! У меня есть таблица в базе данных, данного вида (Пример): ID, NAME, ABOUT, CATEGORY