5 回答
TA贡献1812条经验 获得超5个赞
我遵循相同的教程并遇到了方法“ 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并将原始代码放入它的运行方法中:
@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;
}
TA贡献1895条经验 获得超3个赞
这里linkTo
和methodOn
是类的两个静态方法org.springframework.hateoas.mvc.ControllerLinkBuilder
。您只需要在您的类中添加以下两个静态导入语句:
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo; import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
或者只是导入ControllerLinkBuilder
并将它们用作:
ControllerLinkBuilder.linkTo ControllerLinkBuilder.methodOn
TA贡献1883条经验 获得超3个赞
我那样用过并且有效
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;
@GetMapping("/employees/{id}")
EntityModel<Employee> one(@PathVariable Long id) {
Employee employee = repository.findById(id)
.orElseThrow(() -> new EmployeeNotFoundException(id));
return EntityModel.of(employee, //
WebMvcLinkBuilder.linkTo(WebMvcLinkBuilder.methodOn(EmployeeController.class).one(id)).withSelfRel(),
WebMvcLinkBuilder.linkTo(WebMvcLinkBuilder.methodOn(EmployeeController.class).all()).withRel("employees"));
}
TA贡献1809条经验 获得超8个赞
由于以下事实:ControllerLinkBuilder 已弃用,如下所述: ControllerLinkBuilder java docs
应该改用 WebMvcLinkBuilder。
WebMvcLinkBuilder java文档
考虑使用进口:
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
TA贡献1847条经验 获得超11个赞
看起来你需要两个导入:
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
>>对于方法论import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;
>> 用于实例化 WebMvcLinkBuilder
添加回答
举报