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

@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 получают свои значения, инициализированные должным образом, поскольку я подтвердил это, поместив оператор печати во все методы установки pojos. Полная трассировка стека исключения выглядит следующим образом:

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

[org.springframework.web.context.ContextLoaderListener] org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'usersController': не удалось ввести автоматически подключенные зависимости; вложенное исключение - org.springframework.beans.factory.BeanCreationException: не удалось автоматически подключить поле: com.servicesapi.TechRequestService com.controllers.UsersController.techrequestservices; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем techRequestServiceImpl: не удалось ввести автоматически подключенные зависимости; вложенное исключение - org.springframework.beans.factory.BeanCreationException: не удалось автоматически подключить поле: com.daoapi.TechRequestServiceDao com.servicesimpl.TechRequestServiceImpl.techrequestservicedao; вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: не найдено подходящего bean-компонента типа [com.daoapi.TechRequestServiceDao] для зависимости: ожидается по крайней мере 1 bean-компонент, который квалифицируется как кандидат autowire для этой зависимости. Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (required = true)} в org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues ​​(AutowiredAnnotationBeans.orpringAnnotationBeans. 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.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:306) по адресу org.springframework.beans.factory.support.DefistrySefistryRegultSing org.springframework.beans.factory.support.AbstractBe anFactory.doGetBean (AbstractBeanFactory.java:302) по адресу org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:197) по адресу org.springframework.beans.factoryLactoryBeans (Заводская фабрика по умолчанию. 772) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:839) в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplication.Context.CONTEXT.CONTEXT.CONTEXT.CONTEXT.CONTEXT.CONTEXT) .configureAndRefreshWebApplicationContext (ContextLoader.java:444) в org.springframework.web.context.ContextLoader.initWebApplicationContext (ContextLoader.java:326) в org.springframework.web.context.Context10.context.contextLoaderLoaderLoader apache.catalina.core.StandardContext.listenerStart (StandardContext.java:4792) в орг. 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 (Неизвестный источник)

-1
faize 15 Сен 2018 в 21:44

2 ответа

Лучший ответ

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

0
ZZ 5 15 Сен 2018 в 22:42

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

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

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

1
Jahnavi Paliwal 15 Сен 2018 в 19:08