5 回答

TA貢獻1812條經(jīng)驗 獲得超5個贊
我遵循相同的教程并遇到了方法“ linkTo ”和“ methodOn ”的相同問題。
似乎導入應該來自:
import static org.springframework.hateoas.server.mvc.ControllerLinkBuilder.*;
但是,它似乎已被棄用,現(xiàn)在建議使用 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
在按照教程進行操作時,我還發(fā)現(xiàn)運行“LoadDatabase.java”時出現(xiàn)問題。為了解決這個問題,我必須讓它實現(xiàn) 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條經(jīng)驗 獲得超3個贊
這里linkTo
和methodOn
是類的兩個靜態(tài)方法org.springframework.hateoas.mvc.ControllerLinkBuilder
。您只需要在您的類中添加以下兩個靜態(tài)導入語句:
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo; import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
或者只是導入ControllerLinkBuilder
并將它們用作:
ControllerLinkBuilder.linkTo ControllerLinkBuilder.methodOn

TA貢獻1883條經(jīng)驗 獲得超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條經(jīng)驗 獲得超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條經(jīng)驗 獲得超11個贊
看起來你需要兩個導入:
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*;
>>對于方法論import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;
>> 用于實例化 WebMvcLinkBuilder
添加回答
舉報