орг.каркас.фасоль.фабрика.Исключение UnsatisfiedDependencyException: Ошибка при создании компонента с именем «Страховой контролер»:

#spring #maven #mybatis #autowired

Вопрос:

Я новичок в Spring и пытаюсь создать приложение для обучения, но у меня возникают проблемы с автопроводкой, я добавляю свой код и сообщение об ошибке HTTP 500. Я работаю над maven Spring с IntelliJ.

Пожалуйста, помогите мне….

root-context.xml

 lt;?xml version="1.0" encoding="UTF-8"?gt; lt;beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:context="http://www.springframework.org/schema/context"  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"gt;   lt;context:property-placeholder location="classpath:application.properties" /gt;   lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"gt;  lt;property name="driverClassName" value="${spring.database.class}" /gt;  lt;property name="url" value="${spring.database.host}" /gt;  lt;property name="username" value="${spring.database.username}" /gt;  lt;property name="password" value="${spring.database.password}" /gt;  lt;/beangt;   lt;bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"gt;  lt;property name="dataSource" ref="dataSource" /gt;  lt;/beangt;   lt;bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"gt;  lt;constructor-arg index="0" ref="sqlSessionFactory" /gt;  lt;/beangt; lt;/beansgt;  

InsuranceController.java

 package com.insurance.controller;  import com.insurance.mybatis.dao.InsuranceDAO; import com.insurance.mybatis.dto.InsuranceDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping;  import javax.inject.Inject; import java.util.List;   @Controller public class InsuranceController {  @Autowired  InsuranceDAO insuranceDAO;   @RequestMapping(value="/insurance")  public String test( ModelMap modelMap ){  modelMap.addAttribute( "text", "안녕하세요" );  return "mybatis/insurance";  }   @RequestMapping(value="/insuranceList")  public String insuranceList( Model model ){  Listlt;InsuranceDTOgt; list = insuranceDAO.list();  model.addAttribute("list", list);  model.addAttribute( "text", "안녕하세요" );  return "mybatis/insuranceList";  } }  

Страховая компания

 package com.insurance.mybatis.dao;  import com.insurance.mybatis.dto.InsuranceDTO; import org.springframework.stereotype.Service;  import java.util.List;  @Service public interface InsuranceDAO {  public Listlt;InsuranceDTOgt; list(); }  

InsuranceDAOImpl

 package com.insurance.mybatis.dao;  import com.insurance.mybatis.dto.InsuranceDTO; import org.apache.ibatis.session.SqlSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service;  import javax.inject.Inject; import java.util.List;  //@Repository @Service public class InsuranceDAOImpl implements InsuranceDAO{  @Autowired  SqlSession sqlSession;    @Override  public Listlt;InsuranceDTOgt; list() {  return sqlSession.selectList( "insurance.list" );  } }  

InsuranceDTO

 package com.insurance.mybatis.dto;  public class InsuranceDTO {  private int insuranceID, insuranceCost;  private String insuranceName, content, type;   public int getInsuranceID() {  return insuranceID;  }   public void setInsuranceID(int insuranceID) {  this.insuranceID = insuranceID;  }   public int getInsuranceCost() {  return insuranceCost;  }   public void setInsuranceCost(int insuranceCost) {  this.insuranceCost = insuranceCost;  }   public String getInsuranceName() {  return insuranceName;  }   public void setInsuranceName(String insuranceName) {  this.insuranceName = insuranceName;  }   public String getContent() {  return content;  }   public void setContent(String content) {  this.content = content;  }   public String getType() {  return type;  }   public void setType(String type) {  this.type = type;  } }  

сообщение об ошибке введите описание изображения здесь

Ниже приведена основная причина ошибки

 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'insuranceController': Unsatisfied dependency expressed through field 'insuranceDAO'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.insurance.mybatis.dao.InsuranceDAO' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130) org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1422) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:895) org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:702) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:668) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:716) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:591) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:530) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:170) javax.servlet.GenericServlet.init(GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:624) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1650) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.base/java.lang.Thread.run(Thread.java:832)  

введите описание изображения здесь

Комментарии:

1. Не могли бы вы, пожалуйста, добавить свой основной класс к вашему вопросу? Спасибо!

2. Скорее всего, посылка com.insurance.mybatis.dao не сканируется.

3. Я добавляю Структуру папок проекта.

4. Я не знаю, что такое основной класс….

5. Вы используете Пружинный ботинок? Если это так, у вас должен быть класс с аннотациями @SpringBootApplication . А ты?