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

标签 spring-boot kotlin spring-data-r2dbc

我有一个带有 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/

相关文章:

java - spring-boot oauth2分离授权服务器和资源服务器

java - 如何将密码传递给java(Spring boot)应用程序

java - 更新数据库中的用户权限 Spring boot OAuth 2.0

java - 如何从 POJO 类中的 Firestore 集合中检索所有文档?

Android Studio 4.0.0 Java 8 库在 D8 和 R8 构建错误中脱糖

android - 如何使用 View 绑定(bind)制作 BaseFragment

spring-data-jpa - 是否可以在单个 Spring 引导应用程序中同时使用 Spring Data R2DBC 和 Spring Data JPA?

java - R2dbc 无法使用 tcp 处理 h2 数据库

r2dbc - 如何使用 Spring Data R2DBC 控制事务流的流程?

java - 在没有 http 请求的情况下,如何处理请求(套接字连接)bean 范围?