EventResource 만들기

public class EventResource extends ResourceSupport {

	private Event event;

	public EventResource(Event event) {
		this.event = event;
	}

	public Event getEvent() {
		return event;
	}
}
@PostMapping
public ResponseEntity createEvent(@RequestBody @Valid EventDto eventDto, Errors errors) {
	if (errors.hasErrors()) {
		return ResponseEntity.badRequest().body(errors);
	}

	eventValidator.validate(eventDto, errors);

	if (errors.hasErrors()) {
		return ResponseEntity.badRequest().body(errors);
	}

	Event event = modelMapper.map(eventDto, Event.class);
	event.update();
	Event newEvent = eventRepository.save(event);
	ControllerLinkBuilder selfLinkBuilder = linkTo(EventController.class).slash(newEvent.getId());
	URI createdUri = selfLinkBuilder.toUri();
	EventResource eventResource = new EventResource(newEvent);
	eventResource.add(linkTo(EventController.class).withRel("query-events"));
	eventResource.add(selfLinkBuilder.withSelfRel());
	eventResource.add(selfLinkBuilder.withRel("update-event"));
	return ResponseEntity.created(createdUri).body(eventResource);
}

class EventResource extends Resource<Event> {

	EventResource(Event content, Link... links) {
		super(content, links);
	}
}

셀프 링크는 공통이니 빼겟다.

class EventResource extends Resource<Event> {

	EventResource(Event event, Link... links) {
		super(event, links);
		add(linkTo(EventController.class).slash(event.getId()).withSelfRel());
	}
}