【问题标题】:Using Spring HATEOAS ControllerLinkBuilder and Kotlin throws IllegalArgumentException使用 Spring HATEOAS ControllerLinkBuilder 和 Kotlin 抛出 IllegalArgumentException
【发布时间】:2016-03-06 22:49:16
【问题描述】:

我正在使用 Kotlin 制作一个小型 HATEOAS 春季启动应用程序。我想使用ControllerLinkBuilder 从处理它们的类中自动创建我的 HAL 响应链接,如下所示:

user.add(linkTo(methodOn(UserController::class.java).findByName(userName)).withSelfRel())

但这会引发:

java.lang.IllegalArgumentException: Cannot subclass final class UserController

因为 Kotlin 中的所有类默认都是 final 的。我不热衷(也不想养成)让我所有的课程open 只是为了绕过这个限制。

我也不想手动建立我的链接,因为它们可能会改变(ControllerLinkBuilder 对于填充参数等非常方便。

目前我在想我只需要接受我的控制器类必须是开放的。还有其他方法吗?

【问题讨论】:

    标签: spring kotlin spring-hateoas


    【解决方案1】:

    我不热衷(也不想养成)开放所有课程的习惯

    您只需要打开您的控制器。这是您正在使用的框架的设计功能,需要子类化。无法解决无法子类化 final 类的问题。 JVM 正在执行该规则。所以你需要把它们打开。

    还有其他框架不需要子类化来产生类似的功能。

    【讨论】:

    • 只是出于好奇:还有哪些其他框架提供了类似的功能?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2014-09-18
    • 2014-11-05
    相关资源
    最近更新 更多