10. 초급 실전 예제
10.1. 간단한 CRUD 웹 애플리케이션
이 실전 예제에서는 스프링 부트를 사용하여 간단한 CRUD(Create, Read, Update, Delete) 웹 애플리케이션을 개발해 보겠습니다. 이 애플리케이션은 사용자가 게시물을 생성, 조회, 수정, 삭제할 수 있는 기능을 제공합니다.
- 도메인 모델 생성
먼저, 게시물을 나타내는 Post 도메인 모델을 생성합니다.
@Entity
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String content;
// 생성자, getter, setter, equals, hashCode, toString 생략
}
- 리포지토리 생성
다음으로, Post 도메인 모델을 저장하고 검색할 수 있는 PostRepository 인터페이스를 생성합니다.
public interface PostRepository extends JpaRepository<Post, Long> {
}
- 컨트롤러 생성
이제 PostController 클래스를 생성하여 웹 요청을 처리합니다.
@Controller
@RequestMapping("/posts")
public class PostController {
private final PostRepository postRepository;
public PostController(PostRepository postRepository) {
this.postRepository = postRepository;
}
// CRUD 메소드 생략
}
- CRUD 메소드 구현
PostController 클래스에 CRUD 메서드를 구현합니다.
// Create
@PostMapping
public String createPost(@ModelAttribute Post post) {
postRepository.save(post);
return "redirect:/posts";
}
// Read
@GetMapping
public String getAllPosts(Model model) {
model.addAttribute("posts", postRepository.findAll());
return "posts";
}
// Update
@GetMapping("/{id}/edit")
public String editPost(@PathVariable Long id, Model model) {
model.addAttribute("post", postRepository.findById(id).orElseThrow());
return "edit";
}
@PostMapping("/{id}/edit")
public String updatePost(@PathVariable Long id, @ModelAttribute Post updatedPost) {
Post post = postRepository.findById(id).orElseThrow();
post.setTitle(updatedPost.getTitle());
post.setContent(updatedPost.getContent());
postRepository.save(post);
return "redirect:/posts";
}
// Delete
@PostMapping("/{id}/delete")
public String deletePost(@PathVariable Long id) {
postRepository.deleteById(id);
return "redirect:/posts";
}
10.2. 테스트 및 배포
- 테스트 작성
애플리케이션의 기능을 테스트하는 단위 테스트와 통합 테스트를 작성합니다. 이 테스트를 통해 애플리케이션의 정상 작동을 확인할 수 있습니다.
- 배포
마지막으로, 애플리케이션을 실행 가능한 JAR 파일로 생성하고 웹 서버에 배포합니다. 이를 통해 사용자가 애플리케이션을 인터넷을 통해 접속할 수 있게 됩니다.
이 간단한 CRUD 웹 애플리케이션 예제를 통해 스프링 부트를 사용하여 웹 애플리케이션을 개발하는 기본적인 방법을 학습했습니다. 이 과정에서 사용자 인터페이스, 도메인 모델, 데이터베이스 연동, 웹 요청 처리 등 다양한 웹 개발 요소를 다루게 되었습니다. 이를 바탕으로 실제로 복잡한 웹 애플리케이션을 개발할 때도 스프링 부트의 다양한 기능을 활용하여 생산성을 높일 수 있습니다.
또한, 테스트 작성과 배포 과정을 통해 애플리케이션의 품질을 높이고, 사용자에게 안정적인 서비스를 제공하는 방법을 이해할 수 있었습니다. 앞으로 다양한 프로젝트에서 이러한 경험을 활용하여 성공적인 웹 애플리케이션을 만들어보세요.
2023.05.03 - [프로그래밍/스프링부트(Spring Boot) 기초부터 ~] - [스프링 부트(SpringBoot)] 기본 배포 및 모니터링
'GD's IT Lectures : 기초부터 시리즈 > 스프링부트(Spring Boot) 기초부터 ~' 카테고리의 다른 글
[스프링 부트(SpringBoot) : 중급] 데이터베이스 연동 심화 (0) | 2023.05.05 |
---|---|
[스프링 부트(SpringBoot) : 중급] 스프링 부트 고급 구성 (0) | 2023.05.05 |
[스프링 부트(SpringBoot)] 기본 배포 및 모니터링 (0) | 2023.05.03 |
[스프링 부트(SpringBoot)] 테스트 기초 (0) | 2023.05.03 |
[스프링 부트(SpringBoot)] 간단한 보안 적용 (0) | 2023.05.03 |
댓글