공부/Spring

[Spring Boot] 게시판 만들기(1) - 개요, 기본 기능 구현

다음에바꿔야지 2024. 3. 20. 14:02

개인 프로젝트로 게시판 만들기에 도전해본다.

지금까지 배운 기술을 이용해 백엔드 기능 구현에 집중해볼 것이고, 디자인 및 프론트엔드는 최소화할 것이다.

 

<개요>

- 프로젝트명: 게시판 만들기

- 목표: 현재까지 학습한 백엔드 기술을 접목하여 게시판을 구현한다.

 

- 개발 환경

  1. IDE: IntelliJ

  2. 개발 언어: Java

  3. 프레임워크: Spring Boot

  4. 빌드: Gradle

  5. DB: MariaDB

  6. DB 접근 기술: JPA

  7. View 템플릿: Thymeleaf

 

 

1. 기본 기능 구현

MVC 구조를 이용해 CRUD를 구현한다.

 

<개발 순서>

1. DB 연결

2. 게시글 작성폼 구현

3. 글 작성 처리

4. 게시글 리스트 구현

5. 게시글 상세페이지 구현

6. 게시글 삭제

7. 게시글 수정

8. 확인 메시지 띄우기

9. 파일 업로드

10. 제목 검색 기능 구현

단순한 디자인, 단순한 기능으로 게시판 구현

 

2. 구현 후 느낀점

생각보다 술술 풀렸다. 어렵진 않았고, 헷갈리는 부분이 있었지만 금세 해결했던 것 같다.

계속 반복되는 오류 겸 헷갈리는 개념이 있었다. 이게 그렇게 헷갈린다.

- @RequestParam: 스프링 3.2.x버전 이후 꼭 사용, 쿼리스트링

- @PathVariable: url의 path

 

 

3. 앞으로 할 일

최대한 간단히 구현했기 때문에 고도화가 필요하다. 게시판은 어렵게 만들면 한도끝도 없이 어렵게 만들 수 있다고 했다. 최대한 배운 것을 적용해보도록 고도화를 할 것이다.

 

다음은 구현하면서 느낀 부족한 기능 및 고민할 거리다.

 

1. 메시지 국제화

2. model에 메시지를 전달하는 부분을 따로 메서드로 분리할 수 없을까?

3. 글 삭제시 사용자 확인(비밀번호 기능)

4. 로그인 기능

5. 컨트롤러: 메서드명, Get/PostMapping의 Path가 다 다르기 때문에 복잡도가 증가된 것 같다. 수정해서 바로잡아야겠다.

6. JPA에서 엔티티의 데이터를 변경할때, 변경 감지(Dirty Checking)를 써야한다. setter를 사용했는데, 좋지 않은 방식이다. 또한 트랜잭션 내에 처리해야하는 것을 잊지 말자.

7. DI를 할때, @Autowired로 필드 인젝션을 했는데 좋은 방법이 아니다. 생성자 주입으로 수정하는 것이 좋다.

8. 파일 다운로드 기능

9. 업로드 사이즈 제한

10. 테스트 코드 작성

 

얼른 고쳐야겠다.

*구현 코드: https://github.com/Yeongdong/board.git