
붕어빵과 붕어빵틀 처음 Java를 접하게 될 경우 객체와 클래스에 관해 설명을 위와같이 들어본 사람이 아마 대다수 일 것이다. 하지만 이것은 쉽게 설명하려고 하다보니 생긴 오류다. 개발을 할 때 이러한 부분을 정확하게 선 긋고 확실한 개념으로 일하고 싶기에 이 부분의 오해를 풀어보려한다. 클래스 객체명 = new 클래스(); 일반적으로 위와 같이 클래스로 객체를 생성하는 방식이다. 이를 붕어빵과 붕어빵틀로 바꿔 비유해보겠다. 붕어빵틀 붕어빵 = new 붕어빵틀(); 이 부분이 아직 잘 이해가 안간다면 붕어빵틀을 생산하는 금형기계가 있다고 해보자. 그럼 붕어빵틀이 붕어빵을 찍어내서 클래스라고 한다면 같은 논리로 금형 기계는 붕어빵틀을 찍어내는 클래스가 된다. 이를 코드로 나타내면 다음과 같다. 금형기계 붕..
단위 테스트를 위해 한번에 메서드 하나만을 실행해보는 것이다. 이러한 메서드가 다른 네트워크, 데이터베이스 등등 제어하기 어려운 것들에 의존하고 있다면 어떻게 단위 테스트를 해야할까? 즉, 코드가 해당하는 Flow가 아닌 다른 부분에 많이 얽혀 있다면 단위 테스트를 하기 어려울 것이다. 따라서 이러한 것을 돕기 위해 Mock 이라는 것이 나타났다. Mock이란? 실제 객체를 만들어 사용하기에 시간, 비용 등의 cost가 높거나 혹은 객체 서로간의 의존성이 강해 구현하기 힘들 경우 가짜 객체를 만들어서 사용하는 방법이다. Mock 객체는 언제 필요할까? 테스트 작성을 위한 환경 구축이 어려운 경우 테스트가 특정 경우나 순간에 의존적일 경우 테스트 시간이 오래 걸릴 경우 개인 PC의 성능이나 서버의 성능문제..
DB에는 컬럼명이 보통 스네이크형식 이며 board_no 이렇게 들어간다. 하지만 서버에서 객체의 멤버 변수의 이름은 카멜케이스로 boardNo이렇게 들어간다. 그렇기 때문에 returnType을 VO로 지정했을 경우 명칭이 달라서 데이터를 못받아오는 경우가 생기기 마련이다. 하나의 방법으로 별칭을 지정해서 select board_no as boardNo로 할 수도 있겠지만 너무 번거로운 작업이기 때문에 자동으로 변환해주는 방법을 설정할 것이다. 1. application.yml 설정하기 mybatis: config-location: classpath:mybatis-config.xml //혹시 오류가 난다면 여기 부분 제거 configuration: map-underscore-to-camel-case: ..

1. gradle에 의존성 추가 본 작업은 gradle로 했습니다. 그렇기에 제일 먼저 디펜던시를 추가해 줍니다. dependencies { compile 'org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2' compile 'org.springframework.boot:spring-boot-starter-jdbc' compile 'mysql:mysql-connector-java' } 2. MySQL관련 config 설정 src > main > resources에 application.yml의 파일을 생성해줍니다. spring: datasource: url: jdbc:mysql://ip주소:port번호/DB이름?characterEncoding=utf8 ..

Spring Rest Docs과 Swagger란? Restful API를 사용하기 위해선 문서화가 굉장히 중요하다. 그렇기 때문에 자동화를 도와줄 툴이 필요한데 대표적으로 쓰이는 이 두개를 비교하여 선택하기 위한 게시글 입니다. Spring Rest Docs Swagger 장점 제품코드에 영향이 없다 API를 테스트 해 볼수 있는 화면을 제공한다. 테스트가 성공해야 문서작성된다. 적용하기 쉽다 단점 적용하기 어렵다 제품코드에 어노테이션 추가해야한다. 제품코드와 동기화가 안될 수 있다. API 문서의 목적은 개발하는 스펙을 정의하는 것이라 생각한다. Swagger는 API 동작을 테스트하는 용도에 더 특화되어 있습니다. 반면에 Spring Rest Docs는 깔끔 명료한 문서를 만들 수 있습니다. 그래서 ..
RESTful이란? Representational State Transfer라는 용어의 약자로서 웹의 장점을 최대한 활용할 수 있는 아키텍처 최근 서버 프로그램은 다양한 브라우저와 안드로이드폰, 아이폰과 같은 모바일 디바이스에서도 통신을 할 수 있어야한다. REST가 필요한 이유 -거대한 애플리케이션을 모듈, 기능별로 분리하기 쉬워졌다. RESTful API를 서비스하기만 하면 어떤 다른 모듈 또는 애플리케이션 이라도 RESTful API를 통해 상호간에 통신을 할 수 있기 때문이다. -WEB브라우저 외의 클라이언트를 위해서다. (멀티 플랫폼) REST의 특징 1. Uniform (유니폼 인터페이스) - 유니폼 인터페이스는 URI로 지정한 리소스에 대한 조작을 통일되고 한정적인 인터페이스로 수행하는 아키..
서버, 클라이언트 사이드 렌더링이란? 서버 사이드 렌더링은 UI를 서버에서 렌더링 하는 것을 의미합니다. 서버 사이드 렌더링을 구현하면 사용자가 웹 서비스에 방문 했을 때 서버쪽에서 초기 렌더링을 대신 해주는 것 입니다. 그리고 사용자가 html을 전달 받았을 때 그 내부에 렌더링된 결과물이 보입니다. 반대로 클라이언트 사이드 렌더링은 브라우저에서 모두 처리하는 것이죠. 즉, 자바스크립트를 실행해야 우리가 만든 화면이 사용자에게 보입니다. 처음에는 빈 페이지로 시작하여 자바스크립트가 실행되고 리액트 컴포넌트가 렌더링되면서 화면이 보이는 것입니다. 서버 사이드 렌더링의 장점 일단 구글, 네이버, 등의 검색 엔진이 우리가 만든 웹 애플리케이션의 페이지를 원활하게 수집할 수 있습니다. 리액트로 만든 SPA는 ..
리액트 앱은 컴포넌트 간에 데이터를 props로 전달하기 때문에 컴포넌트가 여기저기서 필요한 데이터가 있을 때 주로 최상위 컴포넌트인 App의 state에 넣어서 관리합니다. 만약 C 컴포넌트가 전역 상태를 업데이트 시키는 기능을 담당한다면 App에서는 const [value, setValue] = useState('hello'); 생성하여 App > A > B > C 순으로 전달해야 합니다. 이렇게 여러 번에 거쳐서 전달하게 될 경우 유지 보수성이 낮아질 가능성이 높기 때문에 Context API를 사용하여 Context에 만들어서 단 한 번에 원하는 값을 받아와 사용할 수 있습니다. import { createContext } from "react"; const ColorContext = create..