[Spring Boot] 게시판 만들기(1) - 개요, 기본 기능 구현
개인 프로젝트로 게시판 만들기에 도전해본다.
지금까지 배운 기술을 이용해 백엔드 기능 구현에 집중해볼 것이고, 디자인 및 프론트엔드는 최소화할 것이다.
<개요>
- 프로젝트명: 게시판 만들기
- 목표: 현재까지 학습한 백엔드 기술을 접목하여 게시판을 구현한다.
- 개발 환경
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. 테스트 코드 작성
얼른 고쳐야겠다.