╹╹╱╻╵╹╷╵╻╱╵╹╵╱╹╵╹╹╱╵╻╵╱╷╻╷╻╹╵
╵╻╱╷╹╷╵╻╵╹╵╷╷╱╹╵╹╱╵╱╵╹╷╵╱╷╻╱╵
╹╻╵╻╱╻╻╱╵╵╵╷╻╻╱╻╱╷╻╹╻╵╷╱╵╵╷╷╷
╹╷╱╱╵╵╷╱╱╵╱╷╷╷╹╻╵╷╹╵╹╷╻╻╷╷╹╱╵
╷╻╷╵╻╹╹╵╱╹╻╷╱╷╻╵╱╷╻╵╵╱╵╻╱╻╵╷╷
╹╹╵╻╷╷╻╱╹╻╱╵╻╵╷╹╵╵╹╹╻╷╱╻╹╵╷╹╵

전체 글 132

[React] Custom Hooks

Custom Hooks 1 아래와 같이 리액트 hook에 로직들을 추가해서 만든 함수가 커스텀 hook이다. 다른 함수처럼 reusing logic이 핵심이고 간단한 커스텀 hook 예시는 아래와 같다. 함수 이름에 use를 붙여야지 리액트가 해당 함수가 hook임을 인지해 내부에서 리액트 hooks가 사용 가능하게 된다. 아니면 안돌아간다. 파일이름은 상관 없다. 또한, 해당 hook이 hook 사용 규칙을 위반했을 때 경고가 뜬다. Hook 사용 규칙 1. 반복문, 조건문, 내부함수에서 호출하지 말 것 2. React 컴포넌트 내부에서만 호출할 것 커스텀 hook의 사용은 함수처럼 다른 컴포넌트에서 그냥 가져다 쓰면 된다. 이때 커스텀 hook에서 state를 생성한다고해서 해당 훅을 사용하는 모든 ..

Frontend/React 2023.09.18

[React] React.memo, useCallback, useMemo, Closure

React.memostate 변경으로 인해 부모 컴포넌트가 재실행 될경우 해당 컴포넌트의 모든 하위 컴포넌트가 DOM 변경과 관련없이 재실행된다. (console.log로 확인 가능)이때 하위 컴포넌트들의 필요없는재실행을 막기위해 React.memo를 사용할 수 있다. 아래와 같이 export할 때 감싸주면 된다.  React.memo는 함수형 컴포넌트에서만 사용할 수 있고해당 컴포넌트에게 넘어오는 props를 확인해 props의 값 변경이 없다면 ( === 사용 )ReactDOM은 해당 컴포넌트를 재실행 하지 않는다. 이처럼 React.memo는 최적화를 위해 사용하는데 남용하면 오히려 비용이 더 많이 들게된다.이는 App 컴포넌트가 변경될 때마다 해당 컴포넌트 기존 props와 새로운 props의 값..

Frontend/React 2023.09.09

[Spring Boot] Configuration Component (@Configuration, @Bean)

이번에는 @Configuratoin 어노테이션에 대해 알아 볼 것이다. 우선 Configuration이란? 구성이라는 뜻이다. 스프링에서도 같은 의미도 사용된다. 사용도 특별하지 않다. 다른 어노테이션들 처럼 클래스 정의부에 달아주면된다. @Configuration @Configuration 어노테이션을 달아주면 해당 클래스는 xml 설정을 대체하는 스프링 설정 클래스가 된다. (Java Config) 쉽게 말하자면, 스프링이 돌아가는데 있어서 설정을 관리하는 객체라는 말이다. 추가적으로 Bean이란 스프링 IoC 컨테이너에 등록된 객체를 말한다. Bean도 일종의 POJO이다. 크게 다를게 없다. 그런데 이때 스프링 IoC 컨테이너에 등록되어야지만, 스프링이 돌아가는데 있어서 해당 객체들을 사용 할 수..

Java/Spring Boot 2022.07.18

[Spring Boot] Repository Component (MyBatis, @Mapper, Insert, Domain)

이번에는 Spring MVC Architecture의 Model 부분과 관련된 Repository에 대해 알아 볼 것이다. 그 동안 모든 Component는 특정 어노테이션을 통해 IoC 컨테이너에 Bean으로 등록하고 어떤 Layer에서 사용 될 지 가시성 있게 표시하였다. 예를들면 @Controller 어노테이션을 통해 해당 IoC 컨테이너에 객체를 Bean으로 등록 및 Presentation Layer에서 사용될 Controller임을 명시하였다. 이처럼 그동안 어노테이션을 통해 각각 명시하였다. 그래서 Repository도 당연히 @Repository 어노테이션을 사용할 것이라고 생각 할 수 있다. 그러나 이번에 Repository를 구현함에 있어서 @Repository 어노테이션은 사용하지 않을..

Java/Spring Boot 2022.07.17

[Spring Boot] Controller Component 개념 2 (@ResponseBody, @RestController, @RequestMapping, @RequestBody, @POST 요청 )

이번에는 저번에 말했듯 또 다른 Controller Component @RestController에 대해 알아 볼 것이다. 그런데 알아보기전 사전의 복습이 필요하다. 왜냐하면 지난번에 알아봤던 @Controller를 통해서 @RestController가 무엇인지 알아 볼 것이기 때문이다. 복습 지난번에 @Controller는 view 요청을 handle 할 때 사용 한다고 했다. @Controller 내부의 메소드가 어떤 값을 반환하면 그 값은 View Resolver에게 전달되어 view 파일의 절대경로가 만들어진다고 했다. 해당 메소드는 문자열 "index" 를 반환한다. 만약 이때, index.html을 render하고 싶은게 아니라 "index" 문자열 자체를 응답해 줘야 하는 경우도 있다. 응답..

Java/Spring Boot 2022.07.17

[Spring Boot] Controller Component 개념 1 (@Controller, @GetMapping, @RequestParam, GET 요청 )

이번엔 Spring MVC에서 C를 담당하고 있는 Controller Component에 대해 알아 볼 것이다. 이때 Component란? 구성요소라는 뜻으로 독립적인 단위 모듈을 뜻한다. 스프링 부트에선 IoC 컨테이너에 등록된 클래스를 뜻한다. @Component 어노테이션을 사용해 직접 작성한 클래스를 IoC 컨테이너에 등록 할 수 있다. 추가적으로 이때 IoC 컨테이너에 등록된 객체를 Bean이라고 한다. 이제 Controller Component에 대해 알아보겠다. Controller Component란? Client의 요청을 직접적으로 받는 Component이다. Cleint가 url을 통한 요청을 보내면 해당 url에 매칭되는 Controller가 해당 요청을 handle한다. 소스코드에서 ..

Java/Spring Boot 2022.07.16

[Spring Boot] Service Component 개념 (@Service, @RequiredArgsConstructor)

이번엔 Spring MVC에서 Model과 관련된 Service Component에 대해서 알아보겠다. 흐름의 순서는 Controller -> Service -> Repository라서 Controller를 먼저 알아야 하지만 Controller와 관련된 개념을 최대한 제외하고 Service 자체를 먼저 알아보겠다. 우선 스프링부트에서 Component가 무엇을 뜻하는지 먼저 알아야한다. 이때 Component란? 구성요소라는 뜻으로 독립적인 단위 모듈을 뜻한다. 스프링 부트에선 IoC 컨테이너에 등록된 클래스를 뜻한다. @Component 어노테이션을 사용해 직접 작성한 클래스를 IoC 컨테이너에 등록 할 수 있다. 이때, IoC 컨테이너에 등록되어 IoC가 관리하는 객체를 Bean이라고 한다. 이번에..

Java/Spring Boot 2022.07.16

[Spring Boot] Spring MVC Architecture 개념

Spring MVC Architencure란?Spring에서 제공하는 web module로 Spring MVC Architecture는 Front Controller Design Pattern을 토대로 MVC Design Pattern을 반영하여 만들어졌다. Front Controller Design Pattern이란?HttpServlet을 상속한 Front Controller가 웹 어플리케이션에서 모든 요청을 담당하는 구조를 말한다. MVC Design Pattern이란?웹 어플리케이션의 구현을 3개의 레이어로 나눈 구조를 뜻한다.웹 어플리케이션의 응답에있어서 구조를 Model, View, Controller로 나누어서 구현 및 관리 하는 것이다. 하나의 Servlet이 모든 request를 담당하고 ..

Java/Spring Boot 2022.07.14

[Spring Boot] 스프링 부트 입문

스프링 부트는 스프링을 더 쉽게 이용하게 해주는 도구이다. 스프링 부트에 대해 알아보기전 스프링이 뭔지를 알아야한다. 스프링이란? 자바 기반의 웹 어플리케이션을 만들 수 있는 프레임 워크이다. 자바 객체와 라이브러리를 관리해주며 자체 WAS가 내장되어있다. (Tomcat) 스프링 프레임워크 특징 스프링의 가장 큰 특징으로 3가지 특징이 있다. POJO IoC DI Plain Old Java Object 객체지향의 기본 원리에 충실하면서 환경과 기술에 의존하지 않고 필요에 따라 제약없이 재사용 가능한 Java Object를 뜻한다. Inversion of Control 객체의 생성 및 생명 주기의 관리를 사용자가 직접하는 것이 아니라 다른 주체가 하는 것을 말한다. IoC Container가 POJO의 생..

Java/Spring Boot 2022.07.14

[DB] Join 문 (Natural Join, Outer Join, Self Join)

지난번에는 Inner Join에 대해 알아보았다. 복습을 해보자면, 두 테이블을 Join 시키면 Join의 결과로 각 테이블의 튜플에 대한 Cartesian Product가 생성된다. (새로운 테이블) 이후 Inner Join이면 해당 테이블에서 join condition에서 참이 나오는 튜플만 반환된다고 했다. 만약 해당 Join이 Equi Join이라면 join condition에서 =을 사용한 것이고 이때 USING을 사용할 수 있다고 했다. USING을 사용하면 각각의 테이블에서 추출한 튜플중 같은 컬럼명을 갖고있는 튜플들에 대해서, 튜플들의 컬럼 데이터 값이 같을 때, join condition은 true가 되어 두 튜플은 하나의 새로운 튜플로 만들어지는데 이때 join conditon에서 사용..