나는 스프링 부트에 대해 거의 모르는 우주 먼지이다.
그러나 독학을 하면서 내가 즐겨 듣는 유튜브와 aws 캠프 강사님께 물어보며 직접 프로젝트를 진행했다.
스프링에 대해선 이 프로젝트를 시작으로 지속적인 공부와 포스팅을 이어서 할 것이다.
우선 프로젝트 기획 먼저 해보자
- Spring boot 활용해서 로컬에서 게시판 띄우기
- aws EC2, RDS 생성하기
- EC2에서 환경 구축(웹 서버, jdk, gradle)
- rds db 연결
- 쿼리문 작성 → 연결.
사용할 프로그램은 IntelliJ, mariaDB, workbench, spring boot, mobaXterm, aws, ec2, rds이다.
1. 로컬에서 먼저 완료하기
이번 프로젝트를 위해서 스프링 부트를 사용할 것이다. 어렵지 않은 게시판 만들기지만 웹을 제대로 종합적으로 사용하여 개발하고 aws 서비스를 여기에 연결시켜서 배포할 것이므로 여러가지 오류가 생길 수도 있다.
먼저 인텔리제이 환경을 설치하여 hello world가 나오는지 확인한다. jdk는 21버전으로 깔았다.
나중에 파일 접근을 할 수 있게 study라는 디렉토리를 생성하여 c드라이브에 넣겠다

이제 이 디렉토리 안에서 작업을 수행할 것이고 앞으로 설치할 spring boot 파일들도 이곳에 넣을 것이다.
디렉토리 생성까지 완료했으면 이제 DB를 다운받아줘야 한다. 데이터베이스는 웹 개발에서 사용자 정보, 콘텐츠, 상태 등을 영구적으로 저장하고 관리하여 웹 애플리케이션의 동적 기능을 구현하는 데 필수적이다.
나중에 배포할 때는 rds같은 클라우드 기반 db 서비스를 사용할 것이지만
로컬에서 먼저 구현을 해야 하므로 db도 깔아줘야 한다.
db는 보통 mysql을 쓰지만 mysql보다 몇 가지 추가 기능과 최적화를 포함하면서 호환까지 되는 mariaDB를 사용해보고 싶어서 db로 쓰게 되었다. mirror 부분은 그냥 자신과 가까운 국가에서 쓰면 될 것 같다.
mariaDB 설치
이제 cmd 창에서 mysql -V를 누르면 뜨지만 환경 변수 설정을 해줘야 뜨므로 바로 하면 안된다
로컬 C → program files → mariaDB 내 버전 → bin에 들어가서 주소를 복사하고 환경변수 path에 추가해준다
이러고 mysql -V 명령어를 입력하면 버전이 뜬다.
워크벤치를 사용하지 않고 cli에서 하면 이렇게 귀찮게 관리를 해야 한다

workbench나 dbeaver을 사용하면 UI적으로 편하게 관리할 수 있다. 이 중에서 workbench 를 사용하겠다.
workbench 설치하고 설정
https://dev.mysql.com/downloads/workbench/ 에 들어가서 설치하면 된다.
MySQL :: Download MySQL Workbench
Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Red Hat Enterprise Linux / Oracle Linux Fedora macOS Source Code Select OS Version: All Windows (x86, 64-bit) Recommended Download: Other Downloads: Windows (x86, 64-bit), M
dev.mysql.com
no thanks 부분을 누르고 들어가서 다운받으면 된다.
다운받고 연 후에 새롭게 생성해주면 된다. 내가 기존에 생성했던 username, password를 입력하면 되고 db 이름 설정은 내 마음대로 하면 된다.
여기서 원통 모양을 누르고 db이름을 정하여 apply를 하면 새로운 db가 만들어지는 것이다.
이제 프로젝트를 생성해서 본격적으로 개발해보자.
스프링 부트 다운
이렇게 start.spring.io라는 홈페이지에 들어가서 설정한 후에 spring boot를 다운받으면 된다.
dependencies를 통해서 개발하는데 필요한 툴까지 같이 받아야 좋다.
이것들을 같이 다운받겠다
각각의 기능:
Spring Web: Spring Framework에서 제공하는 웹 모듈로, 웹 애플리케이션을 구축하는 데 필요한 핵심 기능을 제공. 이 모듈은 웹 요청과 응답 처리, 컨트롤러 및 라우팅 설정, 웹 보안 등을 포함한다.
Spring Data JPA: Spring Data 프로젝트의 일부, JPA(Java Persistence API)를 사용하여 데이터베이스 액세스를 간소화한다. 이 모듈은 개발자가 데이터베이스와 상호작용하는 데 필요한 CRUD(Create, Read, Update, Delete) 기능을 자동화하고, 쿼리 메서드를 사용하여 데이터를 검색할 수 있는 기능을 제공한다.
MariaDB Driver: MariaDB 데이터베이스와의 연결을 위한 JDBC(Java Database Connectivity) 드라이버이다. 이 드라이버를 사용하여 Java 애플리케이션에서 MariaDB 데이터베이스에 연결하고 데이터를 읽고 쓸 수 있다.
Thymeleaf: 웹 애플리케이션의 View(화면)를 생성하는 데 사용되는 서버 사이드 템플릿 엔진이다. Thymeleaf는 HTML 템플릿에 자연스럽게 통합되어 있으며, 동적으로 데이터를 렌더링하고 템플릿을 조작하는 기능을 제공한다.
Lombok: Java 언어를 사용하여 반복적이고 장황한 코드를 줄이는 데 도움을 주는 라이브러리이다. 주요 기능으로는 자동 생성자, 게터 및 세터, equals 및 hashCode 메서드 생성 등이 있다. 이를 통해 코드를 간결하게 유지하고 개발 생산성을 향상시킬 수 있다.
개발 전 세팅
이제 폴더를 옮기고 이름을 board라고 지은 후 프로젝트를 열면 저렇게 많은 파일이 추가되어 있는 것을 알 수 있다.
여기서 실행하면 되지가 않는데 이럴 경우
settings에 들어가서 build와 run을 전부 IntelliJ로 바꿔주면 된다.
이 상태가 전부 끝이 아니다. 아직도 설정할 게 남아있다;; 바로 내 db와 연동하는 과정이 남아있다.
application.properties라는 파일이 있는데 여기서 매핑을 시켜줘야 한다.
먼저 주소 매핑을 해야 하기 때문에 db를 먼저 생성해준다.
이렇게 board db를 생성한 후 이제 이 db를 properties를 통해 연결한다.
jdbc를 통해 url 매핑으로 db와 연결을 했다.
이렇게 오류 페이지가 뜬 것을 확인할 수 있다. 이 페이지가 뜬 것은 연동이 되어 성공했다는 뜻이다.
이제 게시글 작성을 위해 테이블을 만들자.
로컬 세부 개발
기본적인 crud를 위해서 write,view,modify,list,message 페이지들을 만들 것이다.
또한 controller, service,application을 건드려서 각각의 파일의 상호작용을 이룰 것이다.
간단하게 자바 파일들만 추가적으로 설명하자면
컨트롤러(Controller):
- 컨트롤러는 클라이언트의 HTTP 요청을 받고, 그에 맞는 응답을 생성하는 데 사용된다.
- 주로 @Controller 또는 @RestController 어노테이션(Java 소스 코드에 추가되는 메타데이터로, 프로그램의 동작이나 구조를 설명하고 변경하는 데 사용)으로 표시된다.
- 비즈니스 로직을 직접 구현하지 않고, 서비스 레이어에서 제공되는 기능을 호출하여 요청을 처리한다.
- 주로 URL 매핑과 요청 처리 로직을 담당한다.
서비스(Service):
- 서비스는 애플리케이션의 비즈니스 로직을 담당한다.
- 주로 @Service 어노테이션으로 표시된다.
- 컨트롤러와 데이터 액세스 계층(Repository) 사이에서 중간 계층으로 작용하여, 데이터의 처리 및 로직 구현을 담당한다.
- 주로 컨트롤러로부터 전달받은 요청을 처리하고, 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행한다.
애플리케이션 파일(Application File):
- 애플리케이션 파일은 스프링 부트 애플리케이션을 실행하는 데 사용된다.
- 주로 @SpringBootApplication 어노테이션이 포함된 Main 클래스로 구성된다.
- 애플리케이션의 설정 및 구성을 정의하고, 스프링 부트 애플리케이션의 주요 실행 로직을 포함한다.
- 스프링 부트 애플리케이션의 진입점이 되며, 내장된 웹 서버를 시작하고 컨텍스트를 초기화하여 애플리케이션을 실행한다.
https://github.com/Sungmin214/Board-project
GitHub - Sungmin214/Board-project: Bulletin board project using Spring Boot and AWS
Bulletin board project using Spring Boot and AWS. Contribute to Sungmin214/Board-project development by creating an account on GitHub.
github.com
소스코드를 보려면 github에 커밋해서 언제든 쉽게 확인할 수 있다.
crud 작성폼과 여러 자바 소스코드를 이용하여 로컬에서 작성한 게시물 작성, 수정, 삭제, 메시지, 페이징 등의 기능을 수행한 결과 사이트를 먼저 보이겠다.
이 기본 리스트 페이지에서 글 작성을 누르면
작성 사이트가 나오고 작성을 누르면 내가 쓴 글이
이런 확인 문구와 함께
글 작성한 내용이 추가가 되는 것을 확인할 수 있다.
글을 눌러서 들어가면
이렇게 뜨고 수정을 눌러서 추가를 한다
이렇게 내용을 수정해서 수정 버튼을 누르면
이런 메시지 알림창과 함께 수정이 된다.
글을 눌러서 다시 들어가면 수정 내용을 확인할 수 있다. 글 삭제를 누르면
이렇게 사라져 있는 것을 볼 수 있다. 페이징 기능도 추가하였는데
밑에 버튼을 누르면
이렇게 10칸씩 앞으로 가서 내용들을 볼 수 있다.(로컬에선 한글이 잘 보이는데 지금 캡쳐한 화면은 ec2를 띄우고 나서 한글 인코딩이 깨진 상황이다)
기본적인 로컬 환경에서의 게시판 완성이다.
여기까지 로컬에서 개발한 것을 확인하였다. 기본적인 게시판의 역할을 하고 충분히 내 컴퓨터 안에선 기능을 수행할 수 있다.
다음 게시물은 직접 클라우드 환경에서 빌드 하는 과정을 보기로 하자.
'Backend > Spring Boot' 카테고리의 다른 글
lombok이란? (1) | 2024.09.03 |
---|---|
MVC 패턴 (63) | 2024.08.18 |
spring-boot-devtools 라이브러리를 통한 핫 리로드 활성화 (35) | 2024.07.24 |
Maven과 Gradle (18) | 2024.06.19 |
스프링부트와 aws 활용한 게시판 구축과 배포 -2 (28) | 2024.05.29 |