使用Spring HATEOAS ControllerLinkBuilder和Kotlin抛出IllegalArgumentException

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

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

但是这抛出:

 java.lang.IllegalArgumentException: Cannot subclass final class UserController 

因为Kotlin中的所有类都默认是最终的。 我不喜欢(而且也不想养成这样的习惯)为了克服这个限制而open我所有的课程。

我也不是真的想手动建立我的链接,因为他们可能会改变(和ControllerLinkBuilder是非常方便的填充参数等

目前我想我只是要接受我的控制器类必须打开。 有没有其他的方法呢?

我并不热衷(也不想养成这样的习惯)让所有课程都开放

你只需要打开你的控制器。 而且这是你所使用的框架的一个设计特征,那就是子类化是必需的。 没有办法解决无法继承final课程的问题。 JVM正在执行该规则。 所以你需要打开这些。

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