2017-01-13 5 views
0

В настоящее время я столкнулся с проблемой в конфигурации Autowire между контроллером и уровнем обслуживания.Отсутствие отборочного компонента типа весной 4

Вход

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.ults.hrms.service.EmployeeService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 

Контроллер

@Controller 
@RequestMapping("/") 
public class AppController extends ConvertReqDataToJSON { 

    final static Logger logger = Logger.getLogger(AppController.class); 

    /* creating bean definition in Spring container(DI) */ 

    @Autowired 
    EmployeeService employeService; 

    @RequestMapping(value = { "/listuser" }, method = RequestMethod.GET) 
    public @ResponseBody List<Employe> listUsers() throws Exception { 

     return employeService.findAllUsers(); 
    } 
} 

Сервис

@Service 
public class EmployeeService extends GenericDaoImpl<Employe>{ 

    public List<Employe> findAllUsers() throws Exception { 
     return findAllUsers(); 
    } 
} 
GenericDao 

@SuppressWarnings("unchecked") 
@Transactional 
@Repository 
public abstract class GenericDaoImpl<T> implements IGenericDao<T> { 

    protected Class<T> entityClass; 

    @Autowired 
    private SessionFactory sessionFactory; 

public T findAll() throws Exception{ 
     Criteria criteria =sessionFactory.getCurrentSession().createCriteria(getEntityClass()).addOrder(Order.asc("firstName")); 
     criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 
     return (T) criteria.list(); 
    } 
} 

автоматического связывания не работает по какой-то причине ... "No qualifying bean of type com.ults.hrms.service.EmployeeService.

Я пробовал с различными комбинациями @Component и @Transactional тоже.

Извините за большой код, но я не знаю, что может вызвать эту ошибку.

+0

Почему услуга распространяется на DAO? что выглядит странно – Jobin

+0

Это общий dao, почему я расширяюсь. Неправильно или нет? – jermiya

+0

вы не должны делать это в слое службы – Jobin

ответ

1

Основной причиной No qualifying bean of type [com.ults.hrms.service.EmployeeService] является то, что autowired имя свойства не является правильным ..

изменение

@Autowired 
EmployeeService employeService; 

в

@Autowired 
EmployeeService employeeService ; 
+0

бросать ту же ошибку – jermiya

+0

Вам не нужно, что расширяет дао в сервисе – Jobin

0

Вы можете сделать так

@Service("employeService") 
public class EmployeeService extends GenericDaoImpl<Employe>{ 

    public List<Employe> findAllUsers() throws Exception { 
     return findAllUsers(); 
    } 
} 

@Service *** («employeService») *** это позволяет вам выбрать имя, которое вы собираетесь использовать при автоподготовке