出现错误:创建名称为“*”的 bean 时出错:通过字段“repo”表示不满足的依赖关系; n
Posted
技术标签:
【中文标题】出现错误:创建名称为“*”的 bean 时出错:通过字段“repo”表示不满足的依赖关系; n【英文标题】:getting error:Error creating bean with name '*': Unsatisfied dependency expressed through field 'repo'; n 【发布时间】:2020-01-27 17:09:07 【问题描述】:错误: org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为“issueTemplateServiceImpl”的bean时出错:通过字段“repo”表达的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.conseco.repository.IssueTemplateRepo”类型的合格 bean 可用:预计至少有 1 个有资格作为自动装配候选者的 bean。依赖注解:@org.springframework.beans.factory.annotation.Autowired(required=true) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596) 在 org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1395) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) 在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:849) 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) 在 org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:400) 在 org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:291) 在 org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4840) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397) 在 java.base/java.util.concurrent.FutureTask.run(未知来源) 在 java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) 在 java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.base/java.lang.Thread.run(未知来源) 原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的“com.conseco.repository.IssueTemplateRepo”类型的合格bean:预计至少有1个符合自动装配候选资格的bean。依赖注解:@org.springframework.beans.factory.annotation.Autowired(required=true) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1654) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1213) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1167) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593) ... 24 更多
我的代码:
问题模板控制器:
package com.conseco.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.conseco.dao.IssueTemplateInfo;
import com.conseco.service.IssueTemplateService;
@Controller
public class IssueTemplateController
@Autowired
IssueTemplateService service;
@RequestMapping("/new")
public ModelAndView create()
System.out.println("service: "+service);
ModelAndView mav=new ModelAndView("index");
System.out.println("1..................");
IssueTemplateInfo issue=new IssueTemplateInfo();
issue.setSDT("123456");
issue.setAnalysis("test");
issue.setApplicaiton("AWD");
issue.setBatch("no");
issue.setBusinessImpact("N/A");
issue.setDescription("will describe later");
issue.setEMER("N/A");
issue.setImpDate("25th");
issue.setPermanentFix("TBT");
issue.setQCDefect("234");
issue.setRootCause("unknown");
issue.setSeverity(3);
issue.setStatus("Inprogress");
issue.setWorkAround("a lot to work on");
service.save(issue);
System.out.println("4..............");
return mav;
MyFrontController:
package com.conseco.controller;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import com.conseo.config.WebMvcConfig;
public class MyFrontController extends AbstractAnnotationConfigDispatcherServletInitializer
@Override
protected Class<?>[] getRootConfigClasses()
// TODO Auto-generated method stub
return new Class[] WebMvcConfig.class;
@Override
protected Class<?>[] getServletConfigClasses()
// TODO Auto-generated method stub
return null;
@Override
protected String[] getServletMappings()
// TODO Auto-generated method stub
return new String[] "/";
IssueTemplateRepo:
package com.conseco.repository;
import org.springframework.data.repository.CrudRepository;
import com.conseco.dao.IssueTemplateInfo;
public interface IssueTemplateRepo extends CrudRepository<IssueTemplateInfo, String>
IssueTemplateService:
package com.conseco.service;
import org.springframework.stereotype.Service;
import com.conseco.dao.IssueTemplateInfo;
public interface IssueTemplateService
IssueTemplateInfo save(IssueTemplateInfo issue);
IssueTemplateServiceImpl:
package com.conseco.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.conseco.dao.IssueTemplateInfo;
import com.conseco.repository.IssueTemplateRepo;
@Service
public class IssueTemplateServiceImpl implements IssueTemplateService
@Autowired
private IssueTemplateRepo repo;
public IssueTemplateRepo getRepo()
return repo;
public void setRepo(IssueTemplateRepo repo)
this.repo = repo;
@Override
public IssueTemplateInfo save(IssueTemplateInfo issue)
// TODO Auto-generated method stub
return repo.save(issue);
WebMvcConfigurer:
package com.conseo.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableWebMvc
@ComponentScan("com.conseco.service","com.conseco.controller","com.conseco.repository","com.conseco.dao")
public class WebMvcConfig implements WebMvcConfigurer
【问题讨论】:
您好,如果您添加一些您正在尝试做的单词,那就太好了。 我正在尝试使用 spring data jpa 在数据库中插入值,该 jpa 具有预定义的保存或更新或删除定义的 crud 存储库 【参考方案1】:在界面上添加注解@Component
:
@Component
public interface IssueTemplateRepo extends CrudRepository<IssueTemplateInfo, String>
添加@Component
注解后会变成一个spring bean,可以被Spring IoC容器管理。
【讨论】:
@Santhosh 使用@Repository
而不是 @Component
以上是关于出现错误:创建名称为“*”的 bean 时出错:通过字段“repo”表示不满足的依赖关系; n的主要内容,如果未能解决你的问题,请参考以下文章
创建 ServletContext 中定义的名称为“dataSource”的 bean 时出错
Spring MVC:创建 ServletContext 资源中定义的名称为“HandlerMapping”的 bean 时出错
: 创建类路径资源中定义的名称为“entityManagerFactory”的 bean 时出错
Spring boot 2.1.1 到 2.1.2:创建名称为“payloadRootAnnotationMethodEndpointMapping”的 bean 时出错