java - 缺少 linkTo 和 methodOn 声明 Spring HATEOAS STS

标签 java eclipse maven spring-boot spring-hateoas

我正在关注 Spring RESTfull API 教程。本教程要求在某个时候使用 Spring HATEOAS。但是,我的 IDE STS 找不到方法 linkTo 和 methodOn 的引用

@GetMapping("/employees/{id}")
Resource<Employee> one(@PathVariable Long id) {
 Employee emp = repository.findById(id)
  .orElseThrow(() -> new EmployeeNotFoundException(id));

 return new Resource<>(emp,
        linkTo(methodOn(EmployeeController.class).one(id)).withSelfRel(),
        linkTo(methodOn(EmployeeController.class).all()).withRel("employees")
 );
}

Spring HATEOAS 依赖项也在这里:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-hateoas</artifactId>
    </dependency>

我尝试过的事情:

  • 更新 Maven 项目

最佳答案

我正在遵循相同的教程,并在使用方法“linkTo”和“methodOn”时遇到了同样的问题。

看起来导入应该来自:

import static org.springframework.hateoas.server.mvc.ControllerLinkBuilder.*;

但是,它似乎已被弃用,现在建议使用 WebMvcLinkBuilder:

import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;

我在这个类中发现了线索: https://github.com/spring-projects/spring-hateoas-examples/blob/master/simplified/src/main/java/org/springframework/hateoas/examples/EmployeeController.java

此外,在教程页面的底部有一个完整项目的 GitHub 存储库的链接: https://github.com/spring-guides/tut-rest

按照教程操作时,我还发现运行“LoadDatabase.java”时出现问题。为了解决这个问题,我必须让它实现 CommandLineRunner 并将原始代码放入它的 run 方法中:

@Component
public class LoadDatabase implements CommandLineRunner {

    private static final Logger log = LoggerFactory.getLogger(LoadDatabase.class);

    @Override
    public void run(String... args) throws Exception {

        employeeRepository.save(new Employee("Bilbo", "Baggins", "burglar"));
        employeeRepository.save(new Employee("Frodo", "Baggins", "thief"));

        employeeRepository.findAll().forEach(employee -> log.info("Preloaded " + employee));

        orderRepository.save(new Order("MacBook Pro", Status.COMPLETED));
        orderRepository.save(new Order("iPhone", Status.IN_PROGRESS));

        orderRepository.findAll().forEach(order -> {
            log.info("Preloaded " + order);
        });
    }

    @Autowired
    EmployeeRepository employeeRepository;
    @Autowired
    OrderRepository orderRepository;
}

关于java - 缺少 linkTo 和 methodOn 声明 Spring HATEOAS STS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57165849/

相关文章:

java - maven 构建仅在 Jenkins 中失败- Artifact {null :null:null:jar}: The groupId cannot be empty

java - 正则表达式模式 "[\\P{L}]+"在 Java 中意味着什么?

java - 当我使用 BufferedReader 获取 HTML 时,我需要的部分不存在

c - 代码中没有错误,但是当您调试时,我收到错误(Eclipse Luna)

java - 在 Maven 多模块项目上将一个模块设置为父配置中其他模块的依赖项

java - Gradle任务sonarquube在http://localhost:9000/api/settings/values.protobuf上失败并显示401错误

java - 如何将字符串数组和字符串作为可变参数传递?

java - 让 maven 启动 jetty (Tapestry 教程)

PHP(几个问题)OO,重构,eclipse

java - ]] 字符阻止 Eclipse 控制台工作