스프링 REST 웹 서비스를 만들기 위해 스프링 부트 (1.5.3)를 사용하고 있습니다. 유일한 의존성으로 spring-boot-starter-web
을 추가했습니다 (스프링 가이드 별). 다음으로 내 서비스 클래스에 대한 UserManagementService
인터페이스를 만들었습니다.API 클래스의 REST 웹 서비스 주석 추가
@RequestMapping("/usermanagement/v1")
public interface UserManagementService {
@RequestMapping(value = "/user/{id}/", method=RequestMethod.GET)
public UserTo getUserById(@PathVariable("id") long id);
@RequestMapping(value = "https://stackoverflow.com/users/", method=RequestMethod.GET)
public List<UserTo> getAllUsers();
}
그리고 그 구현 UserManagementServiceImpl
@RestController
public class UserManagementServiceImpl implements UserManagementService {
private Map<Integer, UserTo> users;
public UserManagementServiceImpl() {
users = new HashMap<>();
users.put(1, new UserTo(1, "Smantha Barnes"));
users.put(2, new UserTo(2, "Adam Bukowski"));
users.put(3, new UserTo(3, "Meera Nair"));
}
public UserTo getUserById(long id) {
return users.get(id);
}
public List<UserTo> getAllUsers() {
List<UserTo> usersList = new ArrayList<UserTo>(users.values());
return usersList;
}
}
나는 최소한의 구성으로 봄 부팅을 사용하여 만든 REST 웹 서비스에 원이이 일 거라 생각 했어요. 그러나 웹 서비스에 액세스 할 때 응답 없음이 표시됩니다. 내가 누락 된 것?
또한 필자는 구현 클래스가 아닌 인터페이스에 주석이 추가 된 많은 프로젝트를 보았습니다. 클래스에 주석을다는 것보다 낫다고 생각합니다. 여기가 잘 될거야, 그렇지?
확인해야 할 것입니다. 인스턴스화 된 정확한 클래스가 아니므로 주석이 인터페이스에 의해 올바르게 처리되는지 확신 할 수 없습니다. 그리고 더 의견을 바탕으로 생각할 때, 사용자를 위해 같은 방식으로 서비스를 호출해야합니다. 즉, @RequestMapping (value = "/ users/{id} /", method = RequestMethod.GET)'및'@ RequestMapping (value = "/ users /", method = RequestMethod.GET)'을 사용하여 모든 사용자 또는 사용자 목록의 한 사용자를 원할 수 있습니다. 그러나 코멘트의 두 번째 부분은 당신에게 달렸습니다. – DamCx
@DamCx 다른 시나리오를 시도하고 "@PathVariable"이 인터페이스의 메서드 선언에서 작동하지 않는 것 같습니다. 구현 클래스에서만 작동합니다. 코드의 나머지 주석은 인터페이스에서 제대로 작동합니다. –