
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Article {
//생략
public void update(String title, String content){
this.title = title;
this.content = content;
}
}
<updateArticleRequest.java>
@NoArgsConstructor
@AllArgsConstructor
@Getter
public class UpdateArticleRequest {
private String title;
private String content;
}
@RequiredArgsConstructor
@Service
public class BlogService {
//생략
@Transactional
public Article update(long id, UpdateArticleRequest request){
Article article = blogRepository.findById(id)
.orElseThrow(()-> new IllegalArgumentException("not found: " + id));
article.update(request.getTitle(), request.getContent());
return article;
}
}
@RequiredArgsConstructor
@RestController
public class BlogApiController {
private final BlogService blogService;
@PutMapping("/api/article/{id}")
public ResponseEntity<Article> updateArticle(@PathVariable long id,
@RequestBody UpdateArticleRequest request) {
Article updatedArticle = blogService.update(id, request);
return ResponseEntity.ok()
.body(updatedArticle);
}
}
글이 성공적으로 수정되었는지를 확인하기 위해, 수정 전 글과 수정 후 글을 비교한다.



해당 글은 다음 도서의 내용을 정리하고 참고한 글임을 밝힙니다.
신선영, ⌜스프링 부트 3 벡엔드 개발자 되기 - 자바 편⌟, 골든래빗(주), 2023, 384쪽