使用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"))
并没有解决。我在这里想念什么?
答案 0 :(得分:1)
在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()
}