Spring BeanCreationException错误

时间:2016-02-28 07:32:26

标签: java spring hibernate spring-mvc

我正在学习STS数据库连接。

我尝试连接本地数据库。

我的HomeController.java:

@Controller
public class HomeController {

@Autowired private AccountRepository AccountRepository;

//@Autowired
//private AccountDaoImpl AccountDaoImpl;

//private AccountDao AccountDao;

@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
    return "home";
}

@RequestMapping(value = "/home", method = RequestMethod.GET)
public String homehome(Locale locale, Model model) {
    return "home";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public @ResponseBody List<Account> getUserList() {

    return AccountRepository.findAll();
    //EntityManagerFactory emf = Persistence.createEntityManagerFactory("NewPersistenceUnit");
    //AccountDaoImpl.entityManager = emf.createEntityManager();
    //return AccountDaoImpl.getAccount();
}
//@RequestMapping(value = "/login", method = RequestMethod.POST)
//public String login(Locale locale, Model model) {
//  
//  EntityManagerFactory emf = Persistence.createEntityManagerFactory(
//  return "login";
//}
}

AccountRepository.java:

@Service
public interface AccountRepository extends JpaRepository<Account, Long> {
}

我的帐户.java:

 @Entity
 @Table(name = "Account")
 public class Account implements Serializable {
 @Id
 @Column(name = "email")
 private String email;
 @Column(name = "id")
 private String id;
 @Column(name = "password")
 private String password;

 public void setEmail(String email) {
     this.email = email;
 }

 public String getEmail() {
     return email;
 }

 public String getId() {
     return id;
 }

 public void setId(String id) {
     this.id = id;
 }

 public String getPassword() {
     return password;
 }

 public void setPassword(String password) {
     this.password = password;
 }

我认为AccountRepository.java有@Service,但是我收到了这个错误。

  

HTTP状态500 - servlet appServlet的Servlet.init()抛出异常

     

输入例外报告

     

用于servlet appServlet的Servlet.init()抛出异常

     

说明服务器遇到内部错误,导致无法完成此请求。

     

例外

     

javax.servlet.ServletException:servlet appServlet的Servlet.init()抛出异常   org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)   org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)       org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)       org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:673)   org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:277)   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)   org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)       java.lang.Thread.run(Thread.java:745)   根本原因

     

org.springframework.beans.factory.BeanCreationException:使用名称&#39; homeController&#39;创建bean时出错:注册自动连接的依赖项失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段:private com.myongjoon.spring.AccountRepository com.myongjoon.spring.HomeController.AccountRepository;嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到类型为[com.myongjoon.spring.AccountRepository]的限定bean用于依赖:预期至少有1个bean可以作为此依赖项的autowire候选者。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}   org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146)   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)   org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:296)   org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)   org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)   org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)   org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628)   org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)       org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)   org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)   org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:599)   org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)   org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:518)   org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:459)   org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)       javax.servlet.GenericServlet.init(GenericServlet.java:158)   org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)   org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)   org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)   org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:673)   org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:277)   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)   org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)       java.lang.Thread.run(Thread.java:745)   根本原因

     

org.springframework.beans.factory.BeanCreationException:无法自动装配字段:private com.myongjoon.spring.AccountRepository com.myongjoon.spring.HomeController.AccountRepository;嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到类型为[com.myongjoon.spring.AccountRepository]的限定bean用于依赖:预期至少有1个bean可以作为此依赖项的autowire候选者。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}   org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:517)   org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)   org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146)   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)   org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:296)   org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)   org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)   org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)   org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628)   org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)   org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)   org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)   org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:599)   org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)   org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:518)   org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:459)   org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)       javax.servlet.GenericServlet.init(GenericServlet.java:158)   org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)   org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)   org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)   org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:673)   org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:277)   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)   org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)       java.lang.Thread.run(Thread.java:745)   根本原因

     

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到类型为[com.myongjoon.spring.AccountRepository]的限定bean:期望至少有一个bean符合此依赖关系的autowire候选资格。依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}   org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:988)   org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:858)   org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770)   org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489)   org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)   org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146)   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)   org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:296)   org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)   org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)   org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)   org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628)   org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)   org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)   org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)   org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:599)   org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)   org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:518)   org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:459)   org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)       javax.servlet.GenericServlet.init(GenericServlet.java:158)   org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)   org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)   org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)   org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:673)   org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:277)   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617)   org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)       java.lang.Thread.run(Thread.java:745)   注意Pivotal tc Runtime 3.1.2.RELEASE / 8.0.26.B.RELEASE日志中提供了根本原因的完整堆栈跟踪。

     

Pivotal tc Runtime 3.1.2.RELEASE / 8.0.26.B.RELEASE

我想避免这个错误。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

根案例是:&#34;找不到类型为com.myongjoon.spring.AccountRepository的限定bean&#34;。

这是因为,您的代码看起来像是尝试将Spring-Data-Jpa用于存储库。但这需要:

  • 您的存储库只是一个接口(没有@Service注释) 和
  • 您需要通过

    启用Spring-Data-Jpa
    • <springjpa:repositories base-package="com.your.repositories.package" />(命名空间springjpa = http://www.springframework.org/schema/data/jpa/spring-jpa.xsd)或
    • @EnableJpaRepositories(&#34; com.your.repositories.package&#34)

@see:Spring-Data-Jpa Reference