Java Spring MVC+;Spring数据,在服务上插入存储库时出错
在使用Spring MVC+Spring Data+MariaDB的项目中,当我尝试在服务(@Service)上使用@Autowired annotation注入存储库接口(extends Crudepository)时,会出现以下错误:Java Spring MVC+;Spring数据,在服务上插入存储库时出错,java,spring,hibernate,spring-mvc,spring-data-jpa,Java,Spring,Hibernate,Spring Mvc,Spring Data Jpa,在使用Spring MVC+Spring Data+MariaDB的项目中,当我尝试在服务(@Service)上使用@Autowired annotation注入存储库接口(extends Crudepository)时,会出现以下错误: GRAVE:StandardWrapper.Throwable org.springframework.beans.factory.unsatifiedDependencyException:创建名为“pessoaController”的bean时出错:通过字
GRAVE:StandardWrapper.Throwable
org.springframework.beans.factory.unsatifiedDependencyException:创建名为“pessoaController”的bean时出错:通过字段“pessoaseService”表示的未满足的依赖项:创建名为“pessoaseService”的bean时出错:通过字段“pessoasepository”表示的未满足的依赖项:没有类型的限定bean为依赖项[br.com.coderi.adi.repository.pessarepository]找到[br.com.coderi.adi.repository.pessarepository]:应至少有1个bean符合此依赖项的autowire候选项。依赖项批注:{@org.springframework.beans.factory.annotation.Autowired(required=true)};嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项[br.com.coderi.adi.repository.PessoaRepository]类型为[br.com.coderi.adi.repository.PessoaRepository]的符合条件的bean:至少需要1个符合此依赖项autowire候选项的bean。依赖项批注:{@org.springframework.beans.factory.annotation.Autowired(required=true)};嵌套异常为org.springframework.beans.factory.unsatifiedDependencyException:创建名为“pessoaseService”的bean时出错:通过字段“pessoaRepository”表示的未满足的依赖关系:没有[br.com.coderi.adi.repository.pessoareposoasitory]类型的合格bean找到依赖项[br.com.coderi.adi.repository.PessoaRepository]:至少需要1个符合此依赖项autowire候选项条件的bean。依赖项批注:{@org.springframework.beans.factory.annotation.Autowired(必需=true)};嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项[br.com.coderi.adi.repository.PessoaRepository]类型为[br.com.coderi.adi.repository.PessoaRepository]的符合条件的bean:至少需要1个符合此依赖项autowire候选项的bean。依赖项批注:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
位于org.springframework.beans.factory.annotation.AutoWiredNotationBeanPostProcessor$AutoWiredFeldElement.inject(AutoWiredNotationBeanPostProcessor.java:573)
位于org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
位于org.springframework.beans.factory.annotation.AutoWiredNotationBeanPostProcessor.postProcessPropertyValues(AutoWiredNotationBeanPostProcessor.java:350)
位于org.springframework.beans.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.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
位于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.PreInstanceSingleton(DefaultListableBeanFactory.java:775)
位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
位于org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668)
位于org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634)
位于org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682)
位于org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553)
位于org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494)
位于org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
位于javax.servlet.GenericServlet.init(GenericServlet.java:158)
位于org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1231)
位于org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
位于org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1031)
位于org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4914)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5201)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.StandardContext.reload(StandardContext.java:3746)
位于org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:292)
位于org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5528)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1377)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)
位于org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1349)
运行(Thread.java:745)
原因:org.springframework.beans.factory.unsatifiedDependencyException:创建名为“pessoaseService”的bean时出错:未满足的依赖项通过表示
package br.com.coderi.adi.model;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
@Entity
public class Pessoa {
@Id
@GeneratedValue
private Integer id;
@NotNull
private String nome;
@NotNull
private String sobrenome;
private String rg;
private String cps;
<!-- Get/Setters methods... -->
}
package br.com.coderi.adi.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import br.com.coderi.adi.service.PessoaService;
@Controller
@RequestMapping("/pessoa")
public class PessoaController {
@Autowired
private PessoaService pessoaService;
@RequestMapping("/listar")
public String listar(Model model) {
model.addAttribute("pessoas", pessoaService.getPessoas());
return "atendente/pessoa/listar";
}
@RequestMapping(value = "/cadastrar", method = RequestMethod.GET)
public String cadastrar() {
return "atendente/pessoa/cadastrar";
}
}
package br.com.coderi.adi.repository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import br.com.coderi.adi.model.Pessoa;
@Repository
public interface PessoaRepository extends CrudRepository<Pessoa, Integer> {
}
package br.com.coderi.adi.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import br.com.coderi.adi.model.Pessoa;
import br.com.coderi.adi.repository.PessoaRepository;
@Service
public class PessoaService {
@Autowired
private PessoaRepository pessoaRepository;
public Iterable<Pessoa> getPessoas() {
pessoaRepository.findAll();
return null;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- DispatcherServlet Context: defines servlet's request-processing infrastructure -->
<context:component-scan base-package="br.com.coderi.adi"></context:component-scan>
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven></annotation-driven>
<context:annotation-config></context:annotation-config>
<default-servlet-handler />
<!-- Handles HTTP GET requests for /resources/ by efficiently serving up static resources in the webapp/resources directory -->
<resources location="/resources/" mapping="/resources/**"></resources>
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<!-- Message source -->
<beans:bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<beans:property name="basename" value="/WEB-INF/messages" />
</beans:bean>
<!-- Data Sources -->
<beans:bean id="mariadbDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="org.mariadb.jdbc.Driver" />
<beans:property name="url"
value="jdbc:mariadb://localhost:3306/coderi_adi?useSSL=false" />
<beans:property name="username" value="root" />
<beans:property name="password" value="" />
</beans:bean>
<beans:bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<beans:property name="dataSource" ref="mariadbDataSource" />
<beans:property name="persistenceUnitName" value="adiPersistenceUnit" />
<beans:property name="jpaVendorAdapter">
<beans:bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</beans:property>
</beans:bean>
<beans:bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<beans:property name="entityManagerFactory" ref="entityManagerFactory" />
</beans:bean>
<repositories base-package="com.acme.repositories" />