spring-data-r2dbc를 시도하는 gradle 및 kotlin이있는 다중 모듈 SpringBoot 앱이 있습니다. 내 Repository 클래스에 @Repository 주석을 사용하면 @Autowired DatabaseClient가 null입니다. 그러나 주석을 @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
저장소 클래스 ( "data"모듈) :
@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 인터페이스로 컨트롤러에 주입했지만 TestRepo에 대한 인터페이스가 없었고 직접 주입했다는 것입니다. TestRepo에 ITestRepo 인터페이스를 추가하고 ITestRepo로 서비스에 삽입했을 때 모든 것이 작동하기 시작했습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다