프로젝트/게시판 프로젝트

[SpringBoot/게시판] 게시판 API(2) - 프로젝트 생성

과로사한 공돌이 2024. 2. 15. 07:52
728x90
반응형
  1. 시큐리티를 이용한 JSON 데이터로 로그인(진행중...)
  2. JWT를 이용한 인증
  3. 도메인, 테이블 설계, 엔티티 생성
  4. 댓글 삭제 로직 구현
  5. 회원가입 + 정보수정 등 회원 서비스 구현
  6. 게시판 서비스 구현
  7. 댓글 서비스 구현 (1댓글 -> *(무한) 대댓글 구조)
  8. 예외 처리
  9. 예외 메세지 국제화
  10. 카테고리별 게시판 분류
  11. 게시글 페이징
  12. 동적인 검색 조건을 사용한 검색
  13. 사용자 간 쪽지 기능
  1. 무한 쪽지 스크롤
  2. 게시물 & 댓글에 대한 알람
  3. 쪽지에 대한 알람
  4. 접속한 사용자 간 실시간 채팅
  5. Swagger를 사용한 API 문서 만들기
  6. 신고 & 블랙리스트 기능
  7. AOP를 통한 로그
  8. 어드민 페이지
  9. 캐시
  10. 배포 (+ 무중단 배포)
  11. 배포 자동화
  12. Vue.js로 프론트

프로젝트 생성

 

의존성

  • Spring Web : 웹 관련 기능들을 수행한다. 
  • Spring Data JPA : JPA로 데이터 접근을 편하게 만들어준다.
  • Spring Security : 인증 인가 관련한 기능들을 제공해준다. 
  • Lombok : 어노테이션으로 builder, getter, setter, 등의 페턴을 편하게 사용하게 해준다. 
  • Validation : HTTP 요청이 포함한 데이터 형식을 검증해준다. 
  • MariaDB Driver : DB로는 Maria를 사용한다.

초기 설정

Intellij IDEA -> Settings 

 

Build and run using, Run test usingIntelliJ IDEA 로 바꾸어줍니다.

Gradle로 설정할 경우 실행을 Gradle에게 위임하기 때문에 시간이 조금 더 걸린다고들 하는데 저는 체감이 잘 안됩니다.

일단 그렇다고들 하니 시간을 조금이라도 아끼기 위해 설정해줬습니다.

 

Enable annotation processing을 활성화 시켜줍니다.

annotaionProcessor는 컴파일 시점에 Annotation 기반으로 코드를 변경하거나 생성하는 방법을 말합니다.

저는 Lombok을 사용할 것이니 Enable annotation processing을 체크해 활성화 시킵니다.

 

build.gradle에 추가

SQL문이 나간 로그를 보기위해 추가해줍니다.

//p6spy - SQL 로그
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.7.1'

 

application.yml 설정

spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://${DB_HOST}:3306/board
    username: ${DB_USER}
    password: ${DB_PASSWORD}

  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        show_sql: true
        format_sql: true

logging:
  level:
    org:
      hibernate:
        type.descriptor.sql: trace #show parameter binding
        SQL: DEBUG

 

환경변수 설정

application.yml에서 사용하는 환경변수 3개를 환경변수로 추가해줍니다.

저는 데이터베이스는 docker로 띄워뒀습니다.

 

실행

실행시키니 잘 뜨는걸 볼수 있었고

localhost:8080으로 들어가봤을때도 잘 작동하고 있습니다.

아무 페이지도 넣지 않았음에도 sing in 페이지가 나오는거는 spring security를 의존하고 있기 때문입다. 

 

다음으로

이제 회원가입과 JWT를 활용한 로그인을 구현해 보도록 하겠습니다.

728x90
반응형