gpt4 book ai didi

java - 我不能在 Spring Autowiring 存储库

转载 作者:IT老高 更新时间:2023-10-28 13:47:06 25 4
gpt4 key购买 nike

我正在尝试使用 spring 注释在 Controller 中 Autowiring 存储库。我收到错误 org.springframework.data.repository.query.QueryByExampleExecutor class not found我找不到解决方案。

我得到的错误:

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'articleController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.payforeign.article.ArticleRepository com.payforeign.article.ArticleController.repository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'articleRepository': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/data/repository/query/QueryByExampleExecutor

Controller

package com.payforeign.article;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/service")
public class ArticleController {

@Autowired
private ArticleRepository repository;

//controller methods
}

存储库

我用 @Repository 注释了存储库.根据spring文档,我只有存储库接口(interface)。对吗?

package com.payforeign.article;

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ArticleRepository extends CrudRepository<Article, Long> {}

applicationContext.xml

我已包含 jpa:repositories正确的 base-packagecomponent-scan .我已经指定它是注释驱动的( <mvc:annotation-driven /> <tx:annotation-driven /> )并添加了 JDBC 和 JPA 设置。我的 applicationContext.xml 是从 web.xml 正确加载的

<?xml version='1.0' encoding='UTF-8' ?>
<beans ...>
<context:component-scan base-package="com.payforeign,com.payforeign.article" />
<mvc:annotation-driven />
<jpa:repositories base-package="com.payforeign.article" />

<!-- Data Source -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/payforeign" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>

<!-- Hibernate -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.payforeign.article" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="true" />
<property name="database" value="MYSQL" />
</bean>
</property>
</bean>

<!-- enable the configuration of transactional behavior based on annotations -->
<tx:annotation-driven />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
</beans>

最佳答案

您的问题与依赖关系有关。

您正在寻找的类(class)在这里: https://github.com/spring-projects/spring-data-jpa/blob/master/src/main/java/org/springframework/data/jpa/repository/JpaRepository.java

如您所见,最新版本的 spring-data-jpa 有它,因此您应该将失败的 delendency 升级到最新版本或稍微降级 spring-data-jpa 版本(不推荐)。

我的应用程序在使用 spring boot 和 mongoDB jpa 存储库时遇到了类似的问题。

例如,我有 spring-data-jpa 和 spring-data-mongodb 依赖项:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.9.2.RELEASE</version>
</dependency>

但是 spring boot spring-boot-starter-data-jpa 隐式使用了比 1.9.2.RELEASE 更旧版本的 spring-data-mongodb。最简单的修复方法是将 spring-data-mongodb 降级到 1.8.4.RELEASE 版本。

关于java - 我不能在 Spring Autowiring 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36699042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com