我刚刚开始使用SpringBoot+kotlin,我正在尝试 PagingAndSortingRepository
jpa的接口,因此我编写了以下接口:
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")
springboot无法找到一个bean,因为我还没有定义它。但是阅读文档时,这里似乎应该由spring boot生成一个:spring boot数据存储库
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
未找到而不是 CustomerRepository
找不到。
1条答案
按热度按时间qlzsbp2j1#
使用默认内存数据库时,必须定义
在application.properties中。您还缺少@autowired注解。
entityManagerFactory
缺少,因为默认的auo配置已关闭,在这种情况下,应用程序希望您执行所有必要的配置,而您又没有执行这些配置。因此,请保持默认配置,并更改所需内容。此代码假定在单个文件中。
如果您有多个软件包,则可能需要添加此链接中提到的工作代码:
渐变文件