Error de Micronaut al invocar la tarea programada. No se pudo inyectar el valor para el parámetro [repositorio].
Tengo algo muy simple.
@Singleton
open class ServerProcessor(private val repository: ServerRepository) {
@Scheduled(fixedDelay = "2s", initialDelay = "10s")
open fun runPollJobs() {
some other stuff happens here
}
}
Cuando ejecuto eso, obtengo:
> 16:59:03.686 [scheduled-executor-thread-1] ERROR
> i.m.s.DefaultTaskExceptionHandler - Error invoking scheduled task
> Failed to inject value for parameter [repository] of class:
> ...ServerProcessor
Lo extraño es que ese problema viene y va. A veces es suficiente reconstruir la aplicación. A veces se mantiene si ocurrió una vez.
Muy molesto porque no tengo idea de dónde debo buscar.
Utilizando Micronaut 3.2.3 (pero también estaba presente en versiones anteriores) y Kotlin 1.6.10 en Gradle 7.1.1 dentro de IntelliJ.
Cualquier ayuda es bienvenida.
Oli
Añadido el ServerRepository:
@Repository
@JdbcRepository(dialect = Dialect.POSTGRES)
interface ServerRepository : PageableRepository<serverdata, long=""> {
fun findByName(name: String): List<serverdata>
fun findByHost(host: String): ServerData?
}
Y el ServerData:
kotlin
</serverdata,>
@Entity(name = "Server")
@Table(name = "server")
data class ServerData(
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE)
var id: Long = 0,
@Column
var name: String = "",
@Column(unique = true)
var host: String = "",
@Column(unique = true)
var port: Int = -1,
@Column(unique = true)
var password: String = ""
)
davy.ai
Parece que el problema está relacionado con la inyección de dependencias y la clase
ServerProcessor
no puede inyectar la instancia deServerRepository
.Una cosa que debes verificar es si
ServerRepository
está correctamente anotado como un bean, ya sea con la anotación@Singleton
o@Repository
.Otra cosa que debes verificar es si
ServerRepository
está siendo escaneado por el mecanismo de escaneo de componentes de Micronaut. Asegúrate de que el paquete que contieneServerRepository
esté incluido en la lista de escaneo de componentes. Esto se puede hacer agregando la anotación@ComponentScan
con el nombre de paquete en una clase de configuración.También es posible que el problema esté con la configuración de compilación de Gradle. Asegúrate de que las dependencias estén correctamente definidas y que los módulos necesarios de Micronaut estén incluidos.
Por último, intenta depurar la aplicación y verifica si hay errores o excepciones en tiempo de ejecución que puedan estar causando el problema.
¡Espero que esto te ayude!