Возникла исключительная ситуация NoSuchBeanDefinitionException, хотя @Autowire и служба @ repository @ настроены правильно - PullRequest
0 голосов
/ 15 сентября 2018

Мой класс контроллера:

@Controller
public class UsersController
{
    @Autowired
    TechRequestService techrequestservices;

@RequestMapping(value="/service_request", method=RequestMethod.POST)
    public @ResponseBody  Map<String,Object> SaveServiceRequest(@Valid Servicerequest servicerequest,BindingResult result){
        Map<String,Object> map = new HashMap<String,Object>();

        Object obj=new Object();
            if(result.hasErrors())
            {  
                for (Object object : result.getAllErrors()) {
                    if(object instanceof FieldError) {
                        FieldError fieldError = (FieldError) object;

                     obj= (fieldError.getDefaultMessage());
                    }
                map.put("status","400");
                map.put("message",obj);
                return map;
            }}
            techrequestservices.save_servicerequest(servicerequest);
            map.put("status","200");
            map.put("message","Your record have been saved successfully"); 
            return map;
            }

}

Мой класс реализации сервиса:

@Service

    public class TechRequestServiceImpl implements TechRequestService{
        @Autowired
        TechRequestServiceDao techrequestservicedao;

        public boolean save_servicerequest(Servicerequest servicerequest) {
            return techrequestservicedao.save_servicerequest(servicerequest);
        }

        public List<Servicerequest> list() {
            // TODO Auto-generated method stub
            return techrequestservicedao.list();
        }



    }

Мой класс DaoImpl:

@Repository
@Transactional
public class TechRequestServiceDaoImpl implements TechRequestService {

    @Autowired
SessionFactory session;

    @Override
    public boolean save_servicerequest(Servicerequest servicerequest) {
        // TODO Auto-generated method stub
        session.getCurrentSession().saveOrUpdate(servicerequest);
        return true;
    }

    @Override
    public List<Servicerequest> list() {

            return session.getCurrentSession().createQuery("from Search_type_case").list();

    }
}

Запрос приходит черезПеременные ajax и pojo получают свои значения правильно инициализированными, поскольку я подтвердил это, поместив оператор print в метод setjo из pojos.Полная трассировка стека исключительной ситуации выглядит следующим образом:

SEVERE: Exception sending context initialized event to listener instance of class

[org.springframework.web.context.ContextLoaderListener] org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем «usersController»: инъекциясбой автозависимостей;вложенным исключением является org.springframework.beans.factory.BeanCreationException: не удалось автоматически связать поле: com.servicesapi.TechRequestService com.controllers.UsersController.techrequestservices;вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем techRequestServiceImpl: не удалось внедрить зависимостей с автоматической связью;вложенное исключение - org.springframework.beans.factory.BeanCreationException: не удалось автоматически связать поле: com.daoapi.TechRequestServiceDao com.servicesimpl.TechRequestServiceImpl.techrequestservicedao;вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: не найден квалифицирующий компонент типа [com.daoapi.TechRequestServiceDao] для зависимости: ожидается, что по крайней мере 1 компонент, который квалифицируется как кандидат для автоматической передачи этой зависимости.Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (обязательный = true)} в org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues ​​(AutowiredAnost.rag.factory.support.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory.java:1214) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:543) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:482) в org.springframework.beans.factory.support.org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java: 302) по адресу org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:197) по адресу org.springframework.beans.factory.support.DefaultListableBeanFactory.preIn.fab.pref.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:839) в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:5.conf.Conf.Ef444) по адресу org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:326) по адресу org.springframework.web.context.ContextLoaderListener.contextInitialized (ContextLoaderListenap.ina.tata.tata.g.t).listenerStart (StandardContext.java:4792) в org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5256) в org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:150) в org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1421) в org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1411) на java.util.concurrent.FutureTask.run (неизвестный источник) на java.util.concurrent.ThreadPoolExecutor.runWorker (неизвестный источник) наjava.util.concurrent.ThreadPoolExecutor $ Worker.run (неизвестный источник) в java.lang.Thread.run (неизвестный источник)

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Оба TechRequestServiceImpl и TechRequestServiceDaoImpl реализуют TechRequestService, поэтому в контексте есть два компонента типа TechRequestService, но нет типа: TechRequestServiceDao.Чтобы исправить: TechRequestServiceDaoImpl следует реализовать TechRequestServiceDao

0 голосов
/ 15 сентября 2018

Правильно ли настроен Component-Scan для сканирования пакетов по заданному пути?Попробуйте установить component-scan в spring xml configuration для сканирования соответствующих пакетов следующим образом:

<context:component-scan base-package="com.main"/> 

, где ваши пакеты dao, service и controller находятся внутри com.main.Это будет сканировать все файлы в com.main при проверке определения бина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...