본문 바로가기
728x90
반응형
SMALL

Spring boot 프로젝트 기록42

리액트로 간단한 컴포넌트 만들어보기 첫번째로 Todo 컴포넌트를 만들어볼것이다. 간단한 체크박스와 라벨을 랜더링하는 컴포넌트다. src디렉터리 아래에 Todo.js파일을 생성하자 저는 따로 js파일을들을 모아주기위한 js 폴더를 만들었어요! import React from 'react'; class Todo extends React.Component{ render(){ return ( Todo 컴포넌트 테스트 ); } } export default Todo; 현재 인덱스.js는 app컴포넌트가 렌더링 되고있다. 따라서 Todo컴포넌트를 화면에 출력하려면 App컴포넌트의 render함수에 Todo컴포넌트를 추가해야한다. import logo from './logo.svg'; import './App.css'; import Todo from .. 2021. 11. 30.
Node.js와 NPM설치 앞으로 자바스크립트 라이브러리인 React.js 를 이용해 프론트엔드를 개발한다. React.js를 사용하려면 Node.js라는 자바스크립트 런타임 환경을 이용해야한다. 설치를 해줍시다 https://nodejs.org/ko/download/ 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 여기서 다운로드를하자. NPM은 node.js의 패키지 관리 시스템이다. 우리는 NPM을 이용해 node.js 라이브러리를 설치한다. NPM은 노드제이에스를 설치하면 함께 설치된다. 설치후 CMD 커맨드 라인에서 npm version 명령어로 버전 정보를 확인해줍시당! 지금은 16.13버전이.. 2021. 11. 29.
서비스 개발(4) - 삭제기능 Todo를 삭제하는 기능을 구현하고자합니당 퍼시스턴스 구현 TodoRepository를 사용한다. 업데이트를 위해 delete(), findByUserId()메서드를 사용한다. 서비스 구현 Delete기능의 구현을 위해 delete메서드를 작성하겠습니다! TodoService클래스에 해당 메서드를 추가해줍시다 public List deleteTodo(final TodoEntity entity) { Validate.checkValidate(entity); try { //엔티티를 삭제한다. todoRepository.delete(entity); } catch (Exception e) { //예외가 발생했을때 아이디와 예외를 로깅한다. log.error("에러발생!!엔티티 삭제할떄 오류가 발생..", enti.. 2021. 11. 28.
서비스 개발(3) - 업데이트 기능 지금의 포스팅은 Todo를 업데이트하는 리포지토리 서비스 컨트롤러 등을 구현한다. 그럼 제일 먼저할것은 서비스클래스에서 해당 기능을 해주는 update에 관련된 메서드를 만들어주는것이다. public List updateTodo(final TodoEntity entity) { // 저장할 엔티티가 유효한지 확인한다. Validate.checkValidate(entity); // 넘겨받은 엔티티 id를 이용해 Todo Entity를 가져온다. 존재하지 않은 엔티티는 업데이트 할 수 없기때문 final Optional original = todoRepository.findById(entity.getId()); original.ifPresent(todo -> { // 반환된 투두엔티티가 존재하면 값을 새 엔티.. 2021. 11. 28.
서비스 개발(2) - 전체리스트보기 이번에는 Todo리스트를 검색하는 리포지터리 서비스를 구현할것이다. Todo에 관한 서비스오브젝트를 관리하는 TodoSO에 위를 추가해준다 @Autowired TodoRetrieveTodoListCO todoRetrieveTodoListCO; @GetMapping public ResponseEntity retrieveTodoList() { return todoRetrieveTodoListCO.TodoRetrieveTodoList(); } 그리고 실제 동작을 할수있는 코드들이 있는 Controller오브젝트 TodoRetrieveTodo ListCO클래스를 만든다. package com.unoSpringBoot.study.Controller; import java.util.List; import java... 2021. 11. 28.
서비스 개발(1) - 글을 추가하는 기능 서비스 개발에 앞서 , 로깅 하는것을 간단하게 익히고가자, 로깅없이 디버깅하는 것은 코와 입을 막고 숨을 쉬는 것과 같다고한다. 시중에는 로그 라이브러리가 많이 나와있지만 그중 SL4J를 사용하겠다. package com.unoSpringBoot.study.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.unoSpringBoot.study.model.TodoEntity; import com.unoSpringBoot.study.persistence.TodoRepository; import lombok.extern.slf4j... 2021. 11. 26.
기본 쿼리와 쿼리 작성 방법 이전 포스팅에서 쿼리를 작성하지않아도 select문을 사용한것처럼 값을 가져왔다. 그럼 기본적인 쿼리가 아닌 쿼리는 어떻게 작성할까? Todo리파지토리 인터페이스에 List findByUserId(String userId); 이렇게 한줄을 추가해주었다. 이 메서드를 작성하면 스프링 데이터JPA가 메서드이름을 파싱해서 SELECT * FROM TodoReository WHERE userId = '{userId}' 와 같은 쿼리를 작성해 실행한다. 메서드이름은 쿼리, 매개변수는 쿼리의 where문에 들어갈 값을 의미한다. 더 복잡한 쿼리는 @Query 어노테이션을 사용해 지정할 수 있다. 그런데 내스타일은아니다.. 2021. 11. 26.
서비스 레이어 : 비즈니스 로직 서비스 레이어는 컨트롤러와 퍼시스턴스 사이에서 비즈니스 로직을 수행하는 역할을 한다. 서비스 레이어는 HTTP와 긴밀히 연관된 컨트롤러에서 분리되어 있고, 또느 데이터 베이스와 긴밀히 연관된 퍼시스턴스와도 분리되어 있다. 따라서 서비스 레이어에서는 우리가 개발하고자 하는 로직에 집중할 수 있다. TOdo 프로젝트를 위한 비즈니스 로직 구현을 위해 service페키지를 생성하고 그 아래에 TodoService를 만들어보자 package com.unoSpringBoot.study.service; import org.springframework.stereotype.Service; @Service public class TodoService { public String testService() { return .. 2021. 11. 24.
매개변수를 넘겨받는 방법 실습을 진행할것이지만 앞으로 매개변수를 넘겨받는 방법에 대해 실습을 통해 알아보고 앞으로 어떻게 적용할지를 위해서 하루는 따로 정리해서 매개변수를 넘겨받는 방법에 대해 공부하려고한다. /test 방식이 아닌 /test/{id} 등으로 URI의 경로로 넘어오는 값을 변수로 받을수있다. @GetMapping("/{id}") public String testControllerWithPathVariables(@PathVariable(required = false) int id) { return "Hello wolrd!! ID = " + id; } 를 입력하고, 포스트맨으로 실행해보자 한글이 깨지고 오류가 발생했다. 여기서 해결하자 2021.11.23 - 스프링부트 한글오류 스프링부트 한글오류 스프링부트 공부하는.. 2021. 11. 23.
REST API REST는 Respesentational State Transfer의 약자로 아키텍처 스타일이다. 아키텍처 스타일은 아키텍처 패턴과는 조금 다르다. 아키텍처 패턴은 어떤 반복되는 문제 상황을 해결하는 도구고, 아키텍처 스타일은 반복되는 아키텍처 디자인을 의미한다. REST아키텍처 스타일은 6가지 제약조건으로 구성된다. 이 가이드 라인을 따르는 API를 RESTful API라고 한다. REST 제약조건 클라이언트-서버 상태가 없음 캐시되는 데이터 일관적인 인터페이스 레이어 시스템 코드-온-디맨드(선택사항) 클라이언트 - 서버 클라이언트 - 서버라는 것은 리소스를 관리하는 서버가 존재하고, 다수의 클라이언트가 리소스를 소비하려고 네티워크를 통해 서버에 접근하는 구조를 의미한다. 이런 구조 중 우리에게 가장 .. 2021. 11. 23.
레이어드 아키텍처 레이어드 아키텍처 패턴은 어플리케이션을 구성하는 요소들을 수평으로 나눠 관리하는 것이다. 수평으로 나눴다는 것은 무슨 뜻일까? 간단히 말하면, 저 위의 그림처럼 레이어로 나눠 놓은 것들을 하나의 클래스, 하나의 메서드 안에 전부 구현한다고 생각해보자 처음에는 그렇게 길게 작성되지 않는다. 그러나 조금만 복잡한 비즈니스 로직을 구현한다면 메서드가 금방 몇 백줄을 넘을 것이다. 이런 경우 훌륭한 개발자들은 무엇을 하는가? 바로 메서드를 쪼개 작은 메서드로 나눈다. 그런데 다른클래스에서 똑같이 해당 메서드를 가져오려면 복사-붙여놓기 하는식으로 옮겨야한다. 이렇게 계속 복사- 붙여넣는 식으로 쓰다보니 이 메서드 하나를 클래스 하나처럼 쓰자 고 해서 이 작업이 국소적으로 봤을때 레이어로 나누는 것이고 클래스로 나.. 2021. 11. 23.
백엔드 서비스 아키텍처 말은 거창하게 서비스 아키텍처라고 사용하였다. Model/Entitt와 DTO클래스 Controller, Service, Persistence 클래스 테스팅용 REST API 에 대해 실습을 하면서 설명은 설명을 위주로하는 카테고리에서 하도록 하겠다. 오 프로젝트에서는 모델과 엔티티를 한 클래스에 구현한다. 따라서 모델은 비즈니스 데이터를 담는 역할과 데이터베이스의 테이블과 스키마를 표현하는 두 역할을 한다. 큰 애플리 케이션의 경우 모델과 엔티티를 따로 구현하지만 우리는 규모가 작으므로 합쳐서 구현하는 것이다. 이 모델/엔티티의 이름은 TodoEntity이고, Todo리스트의 한 아이템에 해당한다. TodoEntity를 작성하기에 앞서 model 패키지 com.unoSpringBoot.study.mod.. 2021. 11. 22.
728x90
반응형
LIST