SpringBoot @Autowire 在@Repository 中不工作

SpringBoot @Autowire not working inside @Repository

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

数据库配置class:

@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()
    )
 }
}

主要class:

@SpringBootApplication
@EnableR2dbcRepositories
class MultigradleApplication

存储库class(在“数据”模块中):

@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 接口注入到我的 Controller 中,但是我没有 TestRepo 的接口并直接注入它。当我将 ITestRepo 接口添加到 TestRepo 并将其作为 ITestRepo 注入到服务中时,一切都开始工作了。