실행후 -> new project 

 

자바버전 확인 (현재 자바 설치 버전과, 다른 버전도 함께 설치하였다면 같이 나온다.)

스프링 부트 시작 하기 위해 Spring Initializr 탭 클릭 (원하는 환경을 설정)

Spring Web 선택

프로젝트에 필요한 파일이 자동으로 다운받아진 후 프로젝트를 실행해본다(우측 상단에 실행버튼 클릭)

 

8080으로 시작된 것을 확인

 

 

community 버전으로 개발하는 방법

community 버전은 spring을 지원하지 않기 때문에 직접 설정해주어야한다.

new project를 클릭하면 spring 탭이 보이지 않는다.

 

spring을 사용하기 위해서(검색: spring initializer)

Spring Initializr

환경을 설정해주고 ADD DEPENDENCIES를 클릭하여 추가해준뒤 GENERATE를 클릭하여 파일을 생성한다.

 

EXPLORE를 클릭하면 생성되는 항목을 미리 확인이 가능하다

 

다운받은 압축파일을 원하는 곳에 압축을 풀어준다.

 

열기 버튼을 클릭하여 프로젝트를 열어서 확인(build.gradle 파일을 선택)

 

이러한 에러가 났을경우

해당 부분을 수정해준다.

참고 사이트

https://freelearn.tistory.com/17

 

Execution failed for task ':compileJava'.

증상 PC를 새로 구매하여 기존 프로젝트를 새로 셋팅하는 중이었습니다. build도 정상적으로 됐는데 프로젝트를 실행하려고 하니 Execution failed for task ':compileJava'. 에러가 나네요. 원인 결론은 한참

freelearn.tistory.com

 

dependency 추가 방법

https://mvnrepository.com/ 에서 검색

Gradle탭에 내용을 복사

해당 위치에 붙여놓은후 Gradle을 재시작 해준다.

 

빌드된 후 서버를 켜서 확인

http://localhost:8080/swagger-ui/

 

 

https://dev-jwblog.tistory.com/20

 

[SpringBoot] Swagger(springfox) 사용하기

Swagger 예제 코드는 Github 에서 확인하실 수 있습니다. Swagger 샘플은 여기 에서 확인하실 수 있습니다. 1. Swagger(스웨거) 란? - Swagger(스웨거)는 Open Api Specification(OAS)를 위한 프레임워크. - API..

dev-jwblog.tistory.com

 

'IntelliJ' 카테고리의 다른 글

인텔리제이로 리펙터링 하기  (0) 2021.06.05
테스트 코드 작성  (0) 2021.06.05
TodoList 구현 (컨트롤러 구현)  (0) 2021.05.30
TodoList 구현 (서비스 코드 구현)  (0) 2021.05.30
TodoList 구현 (repository 구현)  (0) 2021.05.30

참고

https://ikkison.tistory.com/82

 

(1) 리팩토링, Refactoring 이란?

이 글을 검색하시는 여러분들이라면 노트북이나 PC에 직접 구현한 프로젝트가 있고 최소한 객체지향언어로 프로그램을 구현할 줄 하시는 분들일 겁니다. 이전에 작성 소스코드를 다시 보신적이

ikkison.tistory.com

 

원하는 폴더를 우클릭 후 리펙터링 할 수 있다.

 

기존의 system.out.print() 로 작성된 코드를 log로 바꾸기 위해

어노테이션 추가: @Slf4j

system.out.println -> log.info 로 변경

 

'IntelliJ' 카테고리의 다른 글

인텔리제이로 스프링 부트 시작  (0) 2021.06.06
테스트 코드 작성  (0) 2021.06.05
TodoList 구현 (컨트롤러 구현)  (0) 2021.05.30
TodoList 구현 (서비스 코드 구현)  (0) 2021.05.30
TodoList 구현 (repository 구현)  (0) 2021.05.30

참고 사이트

https://preamtree.tistory.com/55

 

Intelli J에서 JUnit 생성하기(Spring Boot)

부제: 인텔리J에서 JUnit 생성하기. 인텔리J에서 단위테스트 수행하기. Spring에서 효과적인 단위테스트 수행을 위해서는 JUnit을 사용하면 좋다. 이 포스팅에서는 Intelli J(인텔리 J)에서 JUnit을 생성

preamtree.tistory.com

해당 위치에 파일에 테스트 코드 작성을 위한 라이브러리 선언

//  TEST에 필요한 라이브러리
    testImplementation('org.springframework.boot:spring-boot-starter-test')

gradle을 재시작하여 다운받는다

TodoService.java 파일을 이용해 테스트 코드 작성

alt + enter 키로 테스트코드 생성

테스트할 메소드를 선택

test 파일이 생성되는것을 확인

 

해당 test 파일은 mock을 사용

사용 이유: 자체적으로 테스트를 진행하기 위해서

 

참고 사이트

https://effectivesquid.tistory.com/entry/Spring-Boot-starter-test-%EC%99%80-Junit5%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8

 

Spring boot starter test 와 Junit5를 이용한 테스트

Junit 5 & Spring Test을 이용한 TDD 환경 세팅 기본 세팅 @ExtendWith(SpringExtension.class) @SpringBootTest(classes = KkApplication.class) @ActiveProfiles("test") public abstract class SpringTestSuppo..

effectivesquid.tistory.com

 

POSTMAN을 이용하여 테스트 진행(검색: postman)

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

 

Download Postman | Try Postman for Free

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

www.postman.com

 

처음으로 인텔리 J 실행시 에러 처리

에러 내용

Process 'command 'C:/Program Files/Java/jdk1.8.0_291/bin/java.exe'' finished with non-zero exit value 1

 

https://www.inflearn.com/questions/69450

 

인텔리제이 처음 깔아서 프로젝트 첨만들어실행시 오류... - 인프런 | 질문 & 답변

인텔레제이 커뮤니티버젼 처음 설치해서 실행했는데 오류납니다. https://start.spring.io 에서 프로젝트 압축파일 만들고 해제해서 프로젝트 불러와서 import 까지하고 메인메서드 실행했는데 자구 이

www.inflearn.com

 

컨트롤러 코드

package org.example.controller;

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

import java.util.List;
import java.util.stream.Collectors;

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

    private final TodoService service;

    @PostMapping
    public ResponseEntity<TodoResponse> create(@RequestBody TodoRequest request) {
        System.out.println("CREATE");

        if (ObjectUtils.isEmpty(request.getTitle())){
            return ResponseEntity.badRequest().build();
        }

        if (ObjectUtils.isEmpty(request.getOrder())){
            request.setOrder(0L);
        }

        if (ObjectUtils.isEmpty(request.getCompleted())){
            request.setCompleted(false);
        }

        TodoEntity result = this.service.add(request);
        return ResponseEntity.ok(new TodoResponse(result));
    }

    @GetMapping("{id}")
    public ResponseEntity<TodoResponse> readOne(@PathVariable Long id) {
        System.out.println("READ ONE");
        TodoEntity result = this.service.searchById(id);
        return ResponseEntity.ok(new TodoResponse(result));
    }

    @GetMapping
    public ResponseEntity<List<TodoResponse>> readAll() {
        System.out.println("READ ALL");
        List<TodoEntity> list = this.service.searchAll();
        List<TodoResponse> responses = list.stream().map(TodoResponse::new).collect(Collectors.toList());
        return ResponseEntity.ok(responses);
    }

    @PatchMapping("{id}")
    public ResponseEntity<TodoResponse> update(@PathVariable Long id, @RequestBody TodoRequest request) {
        System.out.println("UPDATE");
        TodoEntity result = this.service.updateById(id, request);
        return ResponseEntity.ok(new TodoResponse(result));
    }

    @DeleteMapping("{id}")
    public ResponseEntity<?> deleteOne(@PathVariable Long id){
        System.out.println("DELETE");
        this.service.deleteById(id);
        return ResponseEntity.ok().build();
    }

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

}

 

main 코드

package org.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class TodoServerApplication {
    public static void main(String[] args) {
//        System.out.println("Hello Todo!");
        SpringApplication.run(TodoServerApplication.class, args);

    }
}

 

포스트 맨을 이용하여 확인

로그가 찍히는 것을 확인

 

todolist 확인

Reference Specs for Todo-Backend (todobackend.com)

 

Reference Specs for Todo-Backend

 

www.todobackend.com

 

페이지에서 확인

Todo-Backend client (todobackend.com)

 

Todo-Backend client

 

www.todobackend.com

밑줄친 곳에 본인의 서버 정보를 입력(포트번호)

로그 확인

'IntelliJ' 카테고리의 다른 글

인텔리제이로 리펙터링 하기  (0) 2021.06.05
테스트 코드 작성  (0) 2021.06.05
TodoList 구현 (서비스 코드 구현)  (0) 2021.05.30
TodoList 구현 (repository 구현)  (0) 2021.05.30
TodoList 구현 (모델)  (0) 2021.05.30
package org.example.service;

import lombok.AllArgsConstructor;
import org.example.model.TodoEntity;
import org.example.model.TodoRequest;
import org.example.repository.TodoRepository;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;

import java.util.List;

@Service
@AllArgsConstructor
public class TodoService {

    private final TodoRepository todoRepository;

    //    1. todo 리스트 목록에 아이템을 추가
    public TodoEntity add(TodoRequest request) {
        TodoEntity todoEntity = new TodoEntity();
        todoEntity.setTitle(request.getTitle());
        todoEntity.setOrder(request.getOrder());
        todoEntity.setCompleted(request.getCompleted());
        TodoEntity entity = this.todoRepository.save(todoEntity);
        return entity;
    }

    //    2. todo 리스트 목록 중 특정 아이템을 조회
    public TodoEntity searchById(Long id){
        // 값이 없으면 not found 처리
        return this.todoRepository.findById(id)
                .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
    }

    //    3. todo 리스트 전체 목록을 조회
    public List<TodoEntity> searchAll(){
        return this.todoRepository.findAll();
    }

    //    4. todo 리스트 목록 중 특정 아이템을 수정
    public TodoEntity updateById(Long id, TodoRequest request) {
        TodoEntity todoEntity = this.searchById(id);
        if (request.getTitle() != null) {
            todoEntity.setTitle(request.getTitle());
        }
        if (request.getOrder() != null) {
            todoEntity.setOrder(request.getOrder());
        }
        if (request.getCompleted() != null) {
            todoEntity
                    .setCompleted(request.getCompleted());
        }
        return this.todoRepository.save(todoEntity);
    }

    //    5. todo 리스트 목록 중 특정 아이템을 삭제
    public void deleteById(Long id) {
    
        this.todoRepository.deleteById(id);
    }

    //    6. todo 리스트 전체 목록을 삭제
    public void deleteAll(){
        this.todoRepository.deleteAll();
    }
}

'IntelliJ' 카테고리의 다른 글

테스트 코드 작성  (0) 2021.06.05
TodoList 구현 (컨트롤러 구현)  (0) 2021.05.30
TodoList 구현 (repository 구현)  (0) 2021.05.30
TodoList 구현 (모델)  (0) 2021.05.30
인텔리제이 시작  (0) 2021.05.30

저장소 구현(JpaRepository 사용)

데이터베이스와 데이터를 주고받기 위한 interface 정의

 

package org.example.repository;

import org.example.model.TodoEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface TodoRepository extends JpaRepository<TodoEntity, Long> {
}

 

사용법

public interface 이름 extends JpaRepository <데이터베이스 테이블과 연결될 객체,  해당 객체의 ID에 해당하는 타입>

출처: https://araikuma.tistory.com/329 [프로그램 개발 지식 공유]

 

[Spring] JpaRepository 이용

Spring Data JPA는 "JpaRepository"라는 기능을 사용하면 매우 간단히 데이터를 검색 할 수 있도록 된다. 그 기본적인 사용법을 설명한다. JpaRepository 인터페이스 생성 이전에 기본적인 데이터베이스 액세

araikuma.tistory.com

 

'IntelliJ' 카테고리의 다른 글

테스트 코드 작성  (0) 2021.06.05
TodoList 구현 (컨트롤러 구현)  (0) 2021.05.30
TodoList 구현 (서비스 코드 구현)  (0) 2021.05.30
TodoList 구현 (모델)  (0) 2021.05.30
인텔리제이 시작  (0) 2021.05.30

+ Recent posts