es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
@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 = ""
)
</serverdata,>

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con la inyección de dependencias y la clase ServerProcessor no puede inyectar la instancia de ServerRepository.

    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 contiene ServerRepository 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!

Comments are closed.