首页 > 解决方案 > jparepository 未在服务中自动装配

问题描述

我正在尝试在服务中自动装配存储库,但我不断收到以下错误

org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“articleService”的bean时出错:通过字段“articleRepository”表示的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.mvc.stock.repository.ArticleRepository”类型的合格 bean 可用:预计至少有 1 个有资格作为自动装配候选者的 bean。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
    在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588)
    在 org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)
    在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
    在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
    在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    在 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.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
    在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
    在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
    在 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:138)
    在 javax.servlet.GenericServlet.init(GenericServlet.java:158)
    在 org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1238)
    在 org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1151)
    在 org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:828)
    在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    在 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
    在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
    在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
    在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
    在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
    在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    在 java.lang.Thread.run(Thread.java:748)
原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的“com.mvc.stock.repository.ArticleRepository”类型的合格bean:预计至少有1个有资格作为自动装配候选者的bean。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
    在 org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1486)
    在 org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104)
    在 org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
    在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585)
    ... 38 更多

这是我的配置

</bean>

<bean name="persistenceUnitManager"
        class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
    <property name="persistenceXmlLocations">
        <list>
            <value>classpath*:META-INF/persistence.xml</value>
        </list>
    </property>
    <property name="defaultDataSource" ref="dataSource"></property>
</bean>

<bean name="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitManager" ref="persistenceUnitManager"></property>
    <property name="persistenceUnitName" value="UP_GESTION_DE_STOCK_MVC"></property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"></property>
</bean>

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

这是我的代码

@Service
@Transactional
public class ArticleService {

    @Autowired
    private ArticleRepository articleRepository;
}

和存储库

 @Repository
 public interface ArticleRepository extends JpaRepository<ArticleRepository, Long>{

}

标签: javaspringmavenjpa

解决方案


您没有指示 Spring 生成存储库。这是通过以下方式完成的:

<jpa:repositories base-package="foo.bar" />

您可能还希望启用注释驱动的事务管理:

<tx:annotation-driven />

请参阅如何使用 XML 配置 Spring Data JPA


推荐阅读