반응형

스프링부트로 게시판 API 서버 만들기 프로젝트를 진행해보겠습니다.

SpringBoot 2.x, JPA, Spring Security 등을 사용하여 물품 판매 게시판을 구축해보려고 합니다.

화면단은 개발하지 않고, API만 제공하는 서버 구축이 목적입니다.

 

일단 기본적으로 구현하고자 하는 기능은 다음과 같지만, 진행하면서 임의로 변경(추가 또는 제거)될 수 있습니다.

- 로그인

- 계층형 카테고리

- 물품 판매 게시판

- 계층형 대댓글

- 사용자 간에 쪽지 송수신

- 페이지 번호를 이용한 페이징 처리

- 무한 스크롤을 이용한 페이징 처리

- 동적 검색 조건

 

여유가 된다면,

소셜 로그인, 캐시, 배포, 인증서, 무중단 배포, 배포 자동화, AOP, 국제화 등의 주제들도 적용해보겠습니다.

 

특별한 준비 과정 없이 스프링부트 공부 목적으로 진행되기에, 매끄러운 진행이 안될 수도 있습니다.

구현 방식이나 코드는, 언제든지 생각의 변화에 따라 개선될 수 있습니다.

 

먼저 프로젝트를 생성해보겠습니다.

https://start.spring.io/

위 사이트에서 스프링부트 프로젝트 생성을 위한 설정을 진행해줍니다.

 

initialize spring boot

 

저는 자바 11 버전을 사용할 것이고, Spring Boot는 지금 시점에서 최신 버전인 2.6.0을 사용하도록 하겠습니다.

Dependency는 일단 Spring Web, String Data JPA, Lombok, Spring Security, H2를 추가해서 프로젝트를 생성해보겠습니다.

Spring Web : 웹 관련 기능

Spring Data JPA : JPA 관련 기능

Lombok : 코드 생성 기능(생성자, getter 등)

Spring Security : security 관련 설정 기능

H2 : 개발 단계에서 사용할 DB 드라이버(나중에 전환 예정)

 

 

프로젝트가 생성되었으면, 프로젝트를 열어준 뒤,

Lombok을 사용하기 위해 File -> Settings에 들어가서 Annotation Processors를 활성화시켜줍니다.

enable annotation processing

Enable annotation processing을 체크해줍니다.

이제 어노테이션으로 처리된 내용을 인식할 수 있게 됩니다.

 

 

 

change properties to yml

resources 디렉토리에 있는 application.properties 설정 파일을, 가독성을 위해 application.yml 파일로 바꿔줍니다.

 

변경된 설정 파일에 다음과 같은 내용을 작성해줍니다.

spring:
  datasource:
    url: jdbc:h2:mem:test
    username: sa
    password:
    driver-class-name: org.h2.Driver
  jpa:
    hibernate:
      ddl-auto: create

H2 데이터베이스를 인메모리로 사용하고, 실행할 때마다 테이블을 새로 생성해주기 위한 설정입니다.

 

 

이제 프로젝트를 실행해보겠습니다.

... : Tomcat started on port(s): 8080 (http) with context path ''
... : Started KukemarketApplication in 5.879 seconds (JVM running for 10.543)

톰캣이 8080포트로 구동되었습니다.

http://localhost:8080 에 접속해서 확인해봅니다.

 

redirect login page

security 기본 설정으로 인해 /login으로 리다이렉트되는 것을 확인해볼 수 있습니다.

 

 

이것으로 프로젝트 생성 및 기본 설정이 끝났습니다.

 

다음 시간에는 로그인을 구현해보도록 하겠습니다.

 

 

* 질문 및 피드백은 환영입니다.

* 전체 소스코드에서는 여기에서 확인해볼 수 있습니다.

https://github.com/SongHeeJae/kuke-market

 

 

 

약 7개월 만에 개발을 하게 되었는데, 열심히 작성해보겠습니다.

반응형

+ Recent posts