spring - 带有 JpaRepository 的 RestController 返回 javax.servlet.ServletException:处理程序没有适配器
问题描述
使用 Kotlin,我有以下依赖项:
implementation("org.springframework.boot:spring-boot-starter-web")
implementation(kotlin("stdlib-jdk8"))
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
runtimeOnly("org.postgresql:postgresql")
implementation(kotlin("reflect"))
该实体:
@Entity
@Table(name = "some_table")
data class SomeEntity(
@Id val someNumber: Int,
val someText: String
)
使用此存储库interface SomeRepo : JpaRepository<SomeEntity, Int>
和此控制器:
@RestController("/someEntity")
class SomeController(
val someRepo: SomeRepo
) {
@GetMapping
fun findAll() = someRepo.findAll()
}
javax.servlet.ServletException: No adapter for handler [com.controller.SomeController@10ffe32f]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler
但是当我尝试时,我总是会遇到这个异常localhost:8080/someEntity
更改findAll
为@GetMapping fun findAll(): List<SomeEntity> = listOf(SomeEntity(1, "a"))
没有解决。我在这里缺少什么?
解决方案
value
传入的不是@RequestController
URL 映射,而是 Spring bean 的名称。根映射必须在类级别使用@RequestMapping
或在每个方法上显式提供@GetMapping
/ @PostMapping
..
@RestController
@RequestMapping("/someEntity")
class SomeController(
val someRepo: SomeRepo
) {
@GetMapping
fun findAll() = someRepo.findAll()
}
或者
@RestController
class SomeController(
val someRepo: SomeRepo
) {
@GetMapping("/someEntity")
fun findAll() = someRepo.findAll()
}
推荐阅读
- amazon-web-services - 如何使用海王星导出
- javascript - onYouTubeIframeAPIReady 事件未在第二个选项卡中触发,但在第一个选项卡中工作正常
- flutter - 如何使用 crossAxisAlignment 中心覆盖父列中使用的子文本对齐方式?
- reactjs - 如何在反应中声明“异步”功能组件?
- visual-studio-code - Visual Studio Code 扩展不起作用
- flutter - Flutter:无法从基于持久底部导航栏的视图转到登录视图
- elasticsearch - 忽略 Elasticsearch 映射
- php - 访客详细信息(http 用户代理)适用于 Android 版本 10 及更高版本
- spring - Spring升级:Spring集成JMS java.lang.AbstractMethodError:org.springframework.integration.config.xml.AbstractRouterParser.parseRouter
- google-cloud-platform - 负载测试时需要帮助进行登录身份验证oauth2.0