【发布时间】:2021-06-09 01:52:03
【问题描述】:
我刚刚开始使用 Spring Boot + Kotlin,我正在尝试 JPA 的 PagingAndSortingRepository 接口,所以我编写了以下接口:
interface CustomerRepository : PagingAndSortingRepository<Customer, Long>
Customer 的型号如下:
@Entity
data class Customer(
@Id @GeneratedValue var id: Long,
var name: String
)
现在我正在尝试将其与CustomerService 连接起来,如下所示:
@Service
class CustomerService(
private val customerRepository: CustomerRepository
) {
fun getAllCustomers(): Collection<Customer> = customerRepository.findAll().toList()
fun addCustomer(customer: Customer) = customerRepository.save(customer)
fun deleteCustomer(customer: Customer) = customerRepository.delete(customer)
fun updateCustomer(customer: Customer) = customerRepository.save(customer)
}
Application 看起来像这样:
@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@EnableJpaRepositories
class Application
fun main(args: Array<String>) {
runApplication<Application>(*args)
}
我已经添加了我认为需要的依赖项,如下所示:
plugins {
id("org.springframework.boot") version "2.5.0-SNAPSHOT"
id("io.spring.dependency-management") version "1.0.11.RELEASE"
kotlin("jvm") version "1.4.30"
kotlin("plugin.spring") version "1.4.30"
}
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.apache.derby:derby:10.15.2.0")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
Spring Boot 无法找到一种有意义的 bean,因为我还没有定义它。但是阅读文档,看起来应该是由 Spring Boot 生成的:Spring Boot Data Repositories
Application.properties 是
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
我得到的错误信息是:
Description:
Parameter 0 of constructor in com.ubiquifydigital.crm.service.CustomerService required a bean named 'entityManagerFactory' that could not be found.
Action:
Consider defining a bean named 'entityManagerFactory' in your configuration.
我看到了一些关于此的不同帖子,并尝试添加 Configuration、AutoConfiguration 和 EnableJpaRepositories 注释,但这只会将错误更改为 entityManagerFactory not found 而不是 CustomerRepository not found。
【问题讨论】:
-
你链接的问题是关于设置德比。我对此没有任何问题。我已经删除了我谈到德比的部分,这是一个旁注,而不是我面临的问题
-
请显示 application.properties
-
我发布的问题包含我的 application.properties 和我在 gradle.kts 中的依赖项。我没有使用 Maven
-
为什么禁用
DataSourceAutoConfiguration自动配置?
标签: spring spring-boot kotlin spring-data-jpa