Похоже, что Micronaut не позволяет регистрировать на маршрутизаторе два контроллера, унаследованных от одного базового класса (который реализует интерфейс).
Вот мой упрощенный код, который выдает то же исключение: Затем я получаю это исключение:
package hello.world
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
interface RestOperations {
@Get("/{id}")
fun read(id: Long): Map<String, Any?>
}
open class RestController : RestOperations {
@Get("/{id}")
override fun read(id: Long): Map<String, Any?> {
return mapOf("number" to id)
}
}
@Controller("/foo")
class FooController : RestController() {}
@Controller("/bar")
class BarController : RestController() {}
Это будет работать только для одного контроллера.Это также будет работать, если вы удалите интерфейс RestOperations из RestController.
io.micronaut.context.exceptions.DependencyInjectionException: Failed
to inject value for parameter [router] of class:
io.micronaut.web.router.DefaultRouter
Трассировка длинного стека, начинающаяся с Netty ..., заканчивающаяся:
Caused by:
io.micronaut.context.exceptions.BeanInstantiationException:
Error instantiating bean of
type[io.micronaut.web.router.DefaultRouter]
Дайте мне знать, если у вас есть какие-либоидеи.Спасибо.