Spring(혹은 Spring Boot)으로 포트폴리오 어떻게 만들어야 되는지 물어보는 친구들이 꽤 있어서 제가 만드는 순서를 적어봅니다! 물론, 저도 주니어 개발자고 모르는 부분이 많기 때문에 제가 만드는 순서는 분명 틀린 부분이 많이 있을 겁니다. 참고 정도로만 읽어주세요. 포트폴리오이기 때문에 왜 이런 환경을 구성했는지 설명할 수 있어야 해서 설명도 첨부합니다. 가장 중요한 건 자기 스스로 만들고 자기만의 사이트를 어떻게 만들었는지 설명하는 능력이니 이 부족한 글에 의존하시는 분은 안 계시겠지만서도 혹시 계신다면 그러지 마시길!
1. 환경 구성
너무 당연하지만 개발 환경을 세팅해야 합니다. 포트폴리오의 완성은 개발하여 배포까지 하는 것이기 때문에 마무리까지 어떤 프로그램들이 필요한지 생각하고 준비해야 합니다. 제 프로젝트 환경은 아래와 같습니다.
IDE(통합개발환경) : IntelliJ Ultimate(유료 버전)
- 설명 : 젯브레인에서 만든 IDE로 플러그인 추가 및 DB 접근 기능 등 이클립스와 큰 차이가 있지는 않지만 툴팁을 열 때 자주 렉이 걸리는 이클립스보다 프로그램 자체가 가벼워 선호하게 되었습니다. 무료 버전은 HTML, JSP와 Java Script 및 CSS 등 일부 자동완성을 지원하지 않기 때문에 유료 버전 Ultimate를 사용하고 있습니다.
소스 코드 편집기 : Visual Studio Code(퍼블리싱 목적)
- 설명 : 퍼플리싱 목적으로 사용합니다. 인텔리제이 얼티메이트 버전에서는 퍼블리싱에 필요한 기능도 제공하지만 퍼블리싱 학습 때 사용했던 환경이 VS Code였기 때문에 익숙하여 사용중입니다.
개발 언어 : Java 1.8
- 설명 : 자바 버전 중에서 가장 보편적이고, 배포 서버인 Cafe24가 1.8 환경이기 때문에 선택하였습니다.
프레임워크 : Spring Boot
- 설명 : 스프링 레거시 프로젝트에 비해 다룰 초기 설정이 적습니다. 톰캣이 내장되어 있고 의존성을 추가할 때도 Starter가 붙은 의존성을 추가하면 필요한 관련 라이브러리를 자동으로 추가해주므로 간편합니다. 다만 톰캣이 내장되어 있어 서블릿으로 동작하는 JSP를 권장하지는 않습니다. 하지만 초기 설정 하나만으로도 스프링 레거시 프로젝트보다 개발 속도가 빨라지기 때문에 사용하고 있습니다.
데이터베이스 : MariaDB
- 설명 : MySQL이 Oracle에게 인수되면서 등장한 DBMS입니다. MySQL과 거의 동일하게 동작하며 배포 서버인 Cafe24에서 MariaDB를 사용하기 때문에 선택했습니다.
데이터베이스 관리툴 : MySQL Workbench
- 설명 : DB를 GUI 환경에서 사용할 수 있게 해주는 툴입니다. 툴 내에서 권한 부여가 안 된다거나 일부 기능을 사용할 수 없는 문제가 MariaDB에서 발생하지만 학습 때 계속 사용하던 툴이라 익숙하여 선호하고 있습니다.
DB 접근 기술 : JPA
- 설명 : 객체 관계 매핑 기술입니다. 객체들의 관계를 통해 SQL을 자동으로 생성해주며 세계적으로 MyBatis보다 많이 사용되고 있습니다. JpaRepository를 통해 간단하게 CRUD를 구현할 수 있습니다.
View 템플릿 : JSP
- 설명 : HTML에 JSP 코드를 추가하여 페이지를 동적으로 만드는 템플릿입니다. 톰캣이 있어야 동작하고 스프링 부트에서는 공식적으로 지원하지 않으며 권장하지도 않습니다. 스프링 부트에서는 타임리프나 머스태시 같은 템플릿을 권장하지만 한국은 SPA(Single Page Application, React.js나 Vue.js)를 사용하지 않는 이상 템플릿으로는 아직 JSP를 많이 사용하기 때문에 선택하였습니다. 스프링 부트에서 권장하지 않을쭌 패키징을 War로 하면 정상적으로 작동합니다.
배포 서버 : Cafe24
- 설명 : AWS와 네이버 클라우드와 같은 클라우드 플랫폼으로 구성하면 더 좋은 포트폴리오가 될 수 있지만 Cafe24 호스팅 센터를 이용하면 클라우드 시스템을 이용할 때 필요한 Java, MariaDB, Tomcat 설치가 기본적으로 이뤄져 있어 간편하기 때문에 선택하였습니다. AWS 사용에 익숙해지면 Cafe24에서 변경할 수도 있습니다.
FTP 접속 툴 : Filezilla
- 설명 : FTP 서버에 접속하기 위한 툴입니다.
SSH 접속 툴 : Putty
- 설명 : SSH 서버에 접속하기 위한 터미널 툴입니다.
2. 프로젝트 생성
포트폴리오를 위해 스프링부트 프로젝트를 생성합시다. Spring Initializr 사이트(https://start.spring.io/)에서 프로젝트를 구성할 수 있습니다. 인텔리제이 얼티메이트 버전을 사용하면 사이트에 접속하지 않아도 인텔리제이 내에서 구성 가능합니다.
1) 빌드 : Gradle
2) 언어 : Java
3) 스프링 부트 버전 : 2.6.3
4) 의존성 : Spring Web, Spring Data JPA, MariaDB Driver, Lombok, Spring Security
5) application.properties : 배포 서버인 Cafe24에서 생성된 DB와 연결합니다.
3. 스프링 부트에서 JSP 사용
앞에서 언급하였듯 스프링 부트에서는 JSP를 공식적으로 지원하지 않기 때문에 따로 설정해줘야 합니다. 관련 내용을 따로 작성해두었으니 아래 링크를 참고하여 설정하세요!
https://developer-rooney.tistory.com/192?category=476321
4. 패키지 구성
main/java/최상위 패키지 밑에 controller, entity, repository, service 패키지를 생성합니다. 각각의 패키지가 하는 역할을 고려하여 어떻게 개발할지 생각해봅시다.
예를 들어, 전체 게시글이 나오는 페이지를 메인에 보여주고 싶다면 우선 controller 패키지에 HomeController 클래스를 만들고 기본 Url로 접속 시 메인으로 이동할 메소드를 하나 만들어 줘야 합니다. 그리고 메소드가 리턴할 JSP 페이지도 필요하겠죠? 퍼블리싱이 다 되었다는 가정 하에 데이터를 가져오려면 페이지 생성 후 뭐부터 해야할 지 생각해봅시다. DB에서 데이터를 가져오기 위한 BoardRepository를 repository 밑 패키지에 작성해야 됩니다. 그런데 우리는 JPA를 사용하고 BoardRepository는 JpaRepository를 상속 받아야 하는데 이 때 해당 테이블의 Entity와 해당 Entity의 기본키 타입이 되는 클래스를 알아야 하기 때문에 Entity를 먼저 작성해줘야 합니다.
5. 테이블 생성
엔티티 작성을 위해 MariaDB에 테이블을 생성해주세요. 생성한 테이블의 컬럼에 맞춰서 프로젝트 엔티티를 작성해야 합니다.
* 작성중
'Java Web > Spring' 카테고리의 다른 글
[Spring] ResponseEntity (0) | 2022.02.16 |
---|---|
[Spring] Spring Boot DevTools 사용법 (0) | 2022.02.08 |
[Spring] 인텔리제이 스프링 레거시 프로젝트 세팅 방법 (0) | 2022.01.15 |
[Spring] 객체 지향 5대 원칙 (0) | 2022.01.04 |
[Spring Boot] 스프링 부트+그래들에서 JSP 사용 (0) | 2021.12.29 |