컨트롤러 구현

package org.example.controller;

import lombok.AllArgsConstructor;
import org.example.model.TodoResponse;
import org.example.service.TodoService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin
@AllArgsConstructor
@RequestMapping("/")
public class TodoController {

    private final TodoService service;

    @PostMapping
    public ResponseEntity<TodoResponse> create() {
        System.out.println("CREATE");
        return null;
    }

    @GetMapping("{id}")
    public ResponseEntity<TodoResponse> readOne() {
        System.out.println("READ ONE");
        return null;

    }

    @GetMapping
    public ResponseEntity<List<TodoResponse>> readAll() {
        System.out.println("READ ALL");
        return null;
    }

    @PatchMapping
    public ResponseEntity<TodoResponse> update() {
        System.out.println("UPDATE");
        return null;
    }

    @DeleteMapping("{id}")
    public ResponseEntity<?> deleteOne() {
        System.out.println("DELETE ONE");
        return null;
    }

    @DeleteMapping
    public ResponseEntity<?> deleteAll() {
        System.out.println("DELETE ALL");
        return null;
    }

}

기본적인 로직 구조를 만들어주고 

서버를 실행시켜주자!

인텔리제이에서는 스프링 프로젝트에 대해 기본 8080포트를 제공하고 있는데 다른데서 8080포트를 사용중에 있다면 해당 에러가 발생합니다.

두가지 방법 존재함

첫번째  포트를 변경해 주어야 한다.

두번째 해결방안(windows)

cmd(명령 프롬프트) 를 실행 시키고,

netstat -ano

로컬주소가  0.0.0.0:8080 인 PID 를 이용해서 종료하면 된다.

taskkill /pid [PID] /f

 

포트번호 8080로 실행되는걸 확인후

https://www.postman.com/downloads/

 

Download Postman | Get Started for Free

Try Postman for free! Join 20 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.

www.postman.com

postman 설치 후 실행!

내 로컬주소로 get/post 방식으로 보내주면 api 가 정상적으로 동작되는걸 확인이 가능하다!

컨트롤러 이동후 메소드 작성

개발서버 종료후 다시실행

post man 으로 body에 호출해주면 아이템 추가 완료

하나 더 추가해서 get 으로 전체 조회

삭제 완료 됬다면 status 코드가 200 나오는걸 확인 가능!

1번 삭제후 전체조회를 다시해보면 2번 하나만 남은걸 확인할 수 가 있다.

https://www.todobackend.com/index.html

 

Todo-Backend

Todo-Backend a shared example to showcase backend tech stacks The Todo-Backend project defines a simple web API spec - for managing a todo list. Contributors implement that spec using various tech stacks. Those implementations are cataloged below. A spec r

www.todobackend.com

테스트 받기 

기능 에러없는거 확인

간단한 프론트엔드 입힌상태로 확인

 

1.모델 구현

Model 패키지 안의

 

TodoEntity

h2데이터베이스의 order는 예약어 이기때문에 todoOrder로 바꿔주기

 

TodoRequest

 

TodoResponse

 

각각의 클래스 파일 생성

02.repository 생성

03.서비스코드 구현

메소드 시그니쳐

01 add 메소드

02  searchById 메소드

03 searchAll 메소드

04 updateById 메소드

05 ,06 delete 메소드

 

'intelliJ' 카테고리의 다른 글

Toy 프로젝트(To do List) -1  (0) 2022.11.28
windows 설치 환경  (0) 2022.11.28

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 의존성을 다음과 같이 변경했더니 해결되었다.

 

변경후

에러없이 출력완료

'intelliJ' 카테고리의 다른 글

Toy 프로젝트(To do List) -2  (0) 2022.11.28
windows 설치 환경  (0) 2022.11.28

intelliJ 란?

- 젯브레인스 사에서 제작한 Java 개발을 위한 툴

- IntelliJ 혹은 IDEA 라고 불림

 

설치하기

- https://www.jetbrains.com/idea/

 

IntelliJ IDEA – the Leading Java and Kotlin IDE

IntelliJ IDEA is undoubtedly the top-choice IDE for software developers. It makes Java and Kotlin development a more productive and enjoyable experience.

www.jetbrains.com

버전 선택

- Ultimate : 완전한 기능 제공 (1달간 무료 체험이 가능하다.)
 - Communtity : 제한적 기능 제공
 - Web을 제외한 기본적인 JVM 기반 언어와 안드로이드 개발을 지원한다.
 - Java 기반의 REST API 등의 백엔드 개발만 고려한다면 Communtity 에디션 만으로도 충분하다.

 

설치

4개 전부 체크

- 당연히 Community 버전보다 Ultimate 버전이 다양한 기능을 제공 한다.

 - 먼저 UI로 보는게 더 확실할 것 같다.

 - 일단 javascript, Spring 등 웹개발 관련된 내용을 지원하지 않는 community 버전을 사용하면, 웹 개발시 불편할 수 있다.

'intelliJ' 카테고리의 다른 글

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

+ Recent posts