intelliJ

Toy 프로젝트(To do List) -1

웅-이 2022. 11. 28. 21:12

01.요구사항 정리

필요기능
1 todo 리스트 목록에 아이템을 추가
2 todo 리스트 목록 중 특정 아이템을 조회
3 todo 리스트 목록 전체 목록을 조회
4 todo 리스트 목록 중 특정 아이템을 수정
5 todo 리스트 목록 중 특정 아이템을 삭제
6 todo 리스트 목록을 삭제

02.API 스펙

method endpoint(경로) 기능 request response
POST / todo 아이템 추가 {
"title":"자료구조 공부하기"
}
{
"id":17
"title":"자료구조 공부하기",
"order":0,
"completed":false,
"url":"http://localhost:8080/17"
}
GET / 전체 todo 리스트 조회   [
  {
    "id": 1,
    "title": "자바 기초 공부하기",
    "order": 0,
    "completed": false,
    "url": "http://localhost:8080/1"
  },
  {
    "id": 2,
    "title": "알고리즘 공부 하기",
    "order": 0,
    "completed": false,
    "url": "http://localhost:8080/2"
   }, ...
]
GET /{:id} todo 아이템 조회 -  
DELETE / 전체 todo 리스트 삭제   200
DELETE /{:id} todo 아이템 삭제   200
PATCH /{:id} todo 아이템 수정 {
"title": "반복문 공부하기"
}
{
  "id": 1,
"title": "반복문 공부하기",
"order": 0,
"completed": false,
"url": "http://localhost:8080/1" 
}

환경설정 및 프로젝트세팅(spring boot)

1.New Project 생성

build 가 완료되면 gradle이 생성되는걸 확인

build.gradle 안의 dependencies 기존에 있는 주피터 관련된 의존성들을 삭제후 리로드를 진행!

spring boot 프레임워크를 사용하기위한 spring boot 플러그인 추가해주기! 

필요한 의존성들 추가해주기 !

 

https://mvnrepository.com/

<Plugins>

<dependencies>

data-rest  구현할 rest-api 의 구현을 위한 라이브러리

data-jpa jpa 관련 기능들을 사용하기 위한 라이브러리

database:h2 todo 어플리케이션 서버를 구현하기위한 인메모리 관계형 데이터 베이스인 h2 데이터베이스를 사용

 

여기서 In-Memory DB 란?

In-Memory DB의 경우에는 NoSQL 방식에 속하는 데이터베이스이며, key-balue 방식을 사용하고 있다.

간단히 정리

컴퓨터로 치면 C드라이버에 저장하는게 아니고 16GB짜리 램에다가 데이터베이스를 저장하는것이다.

 

아래와 같은 구조로 나타냄

 

-특징 

1) Memory의 가격이 용량 대비,충분히 낮아지면서 빠른 데이터베이스 성능을 위해서 등장함

2) 디스크(Disk) 대신 메모리(Memory)를 사용함으로써, I/O(Input/output)의 성능을 높여줌!

3) 대표적으로 Redis 및 LMDB 등이 있다.

 

참고하면 좋은 글

출처: https://toma0912.tistory.com/83

 

RDB, NoSQL, In-Memory DB 비교

안녕하세요. 오늘은 최근 많이 쓰이고 있는 데이터베이스 종류에 대해서 비교하는 포스팅을 하려고합니다. 대표적으로 분류하면 RDBMS, ORDBMS, NOSQL, NoSQL에 포함되어 있지만 In-Memory DB등이 있으며,

toma0912.tistory.com

추가로 lombok 라이브러리 추가

 

intelli  J 에서는 lombok 를 사용하기위해서는 추가로 plugin을 추가해주어야 사용이가능하다.!

단축키인 shift+shift 이용해 Preference 들어오기

lombok 검색

인스톨후 재실행 시켜준다

Build, Execution, Deployment 탭의

Compiler 클릭후

Annotation Processors 속성의

Enable annotation processing 체크를 후 apply 를 클릭

 

완료후 

pakage 와 새로운 클래스 추가후 간단히 테스트실행

Cause: class lombok.javac.apt.LombokProcessor (in unnamed module @0x59e73bc0) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x59e73bc0

인텔리제이에서 스프링부트 실행시 위와 같은 오류가 났다.

 

현재 Lombok이 사용중인 JDK16과 호환이 안되는 문제라고 한다.

 

build.gradle의 lombok 의존성을 다음과 같이 변경했더니 해결되었다.

 

변경후

에러없이 출력완료