Home
LeeSeoJune
Cancel

IoC란

IoC란? 📌 정의 Inversion of Control이라고 부르며, 제어의 역전이라고 번역한다. DI와는 다른 것이다. 제일 쉽게 이해할 수 있는 IoC예시는 프레임워크이다. 규칙에 따라 구성요소를 등록하면 프레임워크에서 해당 구성요소를 가져쓰게된다. IoC를 Hollywood Principle이라고도 부른다. 간단하게 원래 클래스 내에...

Spring Boot Filter 테스트하기

Spring Boot Filter 테스트하기 🎊 시작하기 전에… 우선, 필터를 테스트하는 이유는 비즈니스 로직 상 문제가 없음에도 가끔 필터쪽의 실수(오류)로 제대로 작동하지 않는 경우가 있기 때문에 테스트를 한다. 이 글에서는 아래의 예외 핸들링 필터를 기준으로 작성한다. public class ExceptionHandlingFilter ex...

NestJS에서 Strategy Pattern 적용하기

NestJS에서 Strategy Pattern 적용하기 🎊 시작하기 전에… 이 글에서는 프로덕트를 리팩토링할 때 불가피하게 두 개의 DAO를 사용하는 상황을 중심으로 적었다 (TypeORM을 이용해서 plain-sql DAO, Model을 이용한 DAO를 사용하는 상황) 1️⃣ 추상 클래스 정의 우선, 여러 DAO의 부모가 될 추상 클래스를 정...

NestJs와 MongoDB로 위치정보 사용하기

NestJs와 MongoDB로 위치정보 사용하기 🎊 시작하기 전에… NestJS와 MongoDB를 TypeORM을 이용해서 위치정보를 활용 방법을 적은 글입니다. 1️⃣ 스키마 정의 export class Location { constructor(type: string, coordinates: number[]) { this.type ...

AdminJS(AdminBro)로 어드민 구축하기

AdminJS(AdminBro)로 어드민 구축하기 🎊 시작하기 전에… AdminJS는 DB를 웹으로 제어할 수 있는 라이브러리이다. NodeJS 기반 어플리케이션에서 사용 가능하다. 이 글에서는 NestJS에서 AdminJS를 사용하는 방법을 소개한다. 1️⃣ 첫 번째로 @adminjs/express @adminjs/nestjs @adminj...

Typeorm camelcase 매핑하기

Typeorm camelcase 매핑하기 🎊 시작하기 전에… 이 글은 Typeorm을 사용할 때 Entity 객체에 column naming을 snake case로 해야해서 네이밍 규칙이 ts와 맞지않는 불편함을 라이브러리를 활용해서 해결하는 방법을 적었다. 1️⃣ 첫 번째로 npm install typeorm-naming-strategies를...

Jpa에서 복합키 쿼리메소드 만드는법

Jpa에서 복합키 쿼리메소드 만드는법 🎊 시작하기 전에… 쿼리 메소드는 findBy~ 와 같이 직접 쿼리를 짜는 것이 아닌, 메소드 명으로 쿼리를 만드는 것이다. Data Jpa에서 제공하는 기능이다. 이 글에서 설명하는 내용은 아래 엔티티를 기반으로 설명한다. 또, 쿼리메소드는 UserRepository 내부에 있는 것으로 생각한다. @En...

Nginx로 소켓 reverse_proxy

Nginx로 소켓 Reverse Proxy 🎊 시작하기 전에… 우선 Proxy에 대한 기본적인 지식이 있어야 합니다. ♻️ 해결법 location / { ... proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; ... } 위의 proxy_set...

Proxy란

Proxy란 📌 정의 서버와 클라이언트 사이의 중계기로써 대리로통신을 수행하는 것. ➡️ Forward Proxy 일반적인 프록시이다. Client -> Proxy -> Internet 구조를 가지고있다. 프록시 서버는 클라이언트가 알려주기 전에는 목적지를 모른다는 특징이 있다. 요청을 보내는 서버에 클라이언트를 숨기는 역할을 ...

JPA에서 Modifying사용 시 주의점

JPA에서 Modifying사용 시 주의점 📌 정의 Modifying은 조회 쿼리를 제외한 INSERT, UPDATE, DELETE쿼리에서 사용한다. Persistence Context를 무시하고 바로 데이터베이스에 접근한다. ⚠️ 주의점 JPA와의 싱크 문제가 발생할 수 있다. JPA의 Persistence Context에 저장되어있는 객...