gpt4 book ai didi

spring-boot - SpringBoot @Autowire 在@Repository 中不起作用

转载 作者:行者123 更新时间:2023-12-02 13:41:21 25 4
gpt4 key购买 nike

我有一个带有 gradle 和 kotlin 的多模块 SpringBoot 应用程序,正在尝试 spring-data-r2dbc。如果我在我的 Repository 类上使用 @Repository 注释,@Autowired DatabaseClient 为空。但是,如果我将注释更改为@Component,@Autowired 可以工作并且我确实成功调用了数据库。知道为什么 @Autowire 不能使用 @Repository 注释吗?
数据库配置类:

@Configuration
open class DatabaseConfiguration(
@Value("\${spring.data.mssql.host}") private val host: String,
// @Value("\${spring.data.mssql.port}") private val port: Int,
@Value("\${spring.data.mssql.database}") private val database: String,
@Value("\${spring.data.mssql.username}") private val username: String,
@Value("\${spring.data.mssql.password}") private val password: String)
: AbstractR2dbcConfiguration() {

@Bean
override fun connectionFactory(): ConnectionFactory {
return MssqlConnectionFactory(
MssqlConnectionConfiguration.builder()
.host(host)
//.port(port)
.database(database)
.username(username)
.password(password).build()
)
}
}
主类:
@SpringBootApplication
@EnableR2dbcRepositories
class MultigradleApplication
存储库类(在模块“数据”中):
@Repository
open class TestRepo() {

@Autowired
lateinit var client: DatabaseClient

fun getAll() : Flux<PersonDTO> {
return client.execute("SELECT * FROM Person.Person")
.`as`(PersonDTO::class.java)
.fetch()
.all()
}
}

最佳答案

问题是我将 PersonService 作为其 IPersonService 接口(interface)注入(inject)到我的 Controller 中,但我没有 TestRepo 的接口(interface)并直接注入(inject)它。当我将 ITestRepo 接口(interface)添加到 TestRepo 并将其作为 ITestRepo 注入(inject)服务时,一切都开始工作了。

关于spring-boot - SpringBoot @Autowire 在@Repository 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63190036/

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