无法在 Spring 引导 Gradle 项目中导入 HATEOAS 元素
Cannot import HATEOAS elements in Spring Boot Gradle project
我无法导入任何 HATEOAS 元素,尽管它似乎已在我的 build.gradle:
中正确实现
implementation 'org.springframework.boot:spring-boot-starter-hateoas'
这是我的进口商品:
import org.springframework.hateoas.Resource;
import org.springframework.hateoas.Resources;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.*;
错误如下:
$ ./gradlew build
> Task :compileJava FAILED
path\src\main\java\payroll\EmployeeController.java:5: error: cannot find symbol
import org.springframework.hateoas.Resource;
^
symbol: class Resource
location: package org.springframework.hateoas
path\src\main\java\payroll\EmployeeController.java:6: error: cannot find symbol
import org.springframework.hateoas.Resources;
^
symbol: class Resources
location: package org.springframework.hateoas
path\src\main\java\payroll\EmployeeController.java:15: error: package org.springframework.hateoas.mvc does not exist
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.*;
^
path\src\main\java\payroll\EmployeeController.java:41: error: cannot find symbol
Resource<Employee> one(@PathVariable Long id) {
^
symbol: class Resource
location: class EmployeeController
4 errors
我认为这无关紧要,但我正在使用 IntelliJ 并尝试完成本教程:https://spring.io/guides/tutorials/bookmarks/
我用谷歌搜索这个问题时找不到任何解决方案,我也不太明白问题出在哪里,所以我不知道还能尝试什么。
经过更多研究,我意识到 spring.io 教程已经过时了。玩了一会儿后,IntelliJ 开始显示 org.springframework.hateoas,但教程提供的导入仍然无效。
终于找到link的源码了,代码已经更新了,教程还没有。
https://github.com/spring-guides/tut-rest/tree/master/rest/src/main/java/payroll
基本上,Resource 已替换为 EntityModel,Resources 已替换为 CollectionModel,导入的结构也发生了变化。
更新我的代码以匹配源代码后,我在为员工发送 GET 请求时得到了预期的响应:
{"id":1,"name":"Bilbo Baggins","role":"burglar","_links":{"self":{"href":"http://localhost:8080/employees/1"},"employees":{"href":"http://localhost:8080/employees"}}}
您可能找到了过时的教程。现在您需要将应用程序代码迁移到较新版本的 HATEOAS。
- 参见Migrating to Spring HATEOAS 1.0指南
- 您可以在 GitHub 上找到官方 migration script。只需从您的项目根目录下载 运行 它。默认情况下,它将检查所有 Java 源文件并将旧的 Spring HATEOAS 类型引用替换为新的。
我无法导入任何 HATEOAS 元素,尽管它似乎已在我的 build.gradle:
中正确实现implementation 'org.springframework.boot:spring-boot-starter-hateoas'
这是我的进口商品:
import org.springframework.hateoas.Resource;
import org.springframework.hateoas.Resources;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.*;
错误如下:
$ ./gradlew build
> Task :compileJava FAILED
path\src\main\java\payroll\EmployeeController.java:5: error: cannot find symbol
import org.springframework.hateoas.Resource;
^
symbol: class Resource
location: package org.springframework.hateoas
path\src\main\java\payroll\EmployeeController.java:6: error: cannot find symbol
import org.springframework.hateoas.Resources;
^
symbol: class Resources
location: package org.springframework.hateoas
path\src\main\java\payroll\EmployeeController.java:15: error: package org.springframework.hateoas.mvc does not exist
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.*;
^
path\src\main\java\payroll\EmployeeController.java:41: error: cannot find symbol
Resource<Employee> one(@PathVariable Long id) {
^
symbol: class Resource
location: class EmployeeController
4 errors
我认为这无关紧要,但我正在使用 IntelliJ 并尝试完成本教程:https://spring.io/guides/tutorials/bookmarks/
我用谷歌搜索这个问题时找不到任何解决方案,我也不太明白问题出在哪里,所以我不知道还能尝试什么。
经过更多研究,我意识到 spring.io 教程已经过时了。玩了一会儿后,IntelliJ 开始显示 org.springframework.hateoas,但教程提供的导入仍然无效。
终于找到link的源码了,代码已经更新了,教程还没有。
https://github.com/spring-guides/tut-rest/tree/master/rest/src/main/java/payroll
基本上,Resource 已替换为 EntityModel,Resources 已替换为 CollectionModel,导入的结构也发生了变化。
更新我的代码以匹配源代码后,我在为员工发送 GET 请求时得到了预期的响应:
{"id":1,"name":"Bilbo Baggins","role":"burglar","_links":{"self":{"href":"http://localhost:8080/employees/1"},"employees":{"href":"http://localhost:8080/employees"}}}
您可能找到了过时的教程。现在您需要将应用程序代码迁移到较新版本的 HATEOAS。
- 参见Migrating to Spring HATEOAS 1.0指南
- 您可以在 GitHub 上找到官方 migration script。只需从您的项目根目录下载 运行 它。默认情况下,它将检查所有 Java 源文件并将旧的 Spring HATEOAS 类型引用替换为新的。