개발/[Basic](12)
-
[Spring] 어플리케이션 컨텍스트에서 빈 생성 방법
싱글톤 레지스트리 스프링은 기본적으로 별다른 설정을 하지 않으면 내부에서 생성하는 빈 오브젝트를 모두 싱글톤으로 만든다. 왜 스프링은 싱글톤으로 빈을 만든 것인가? 스프링은 대부분 서버환경에서 사용이된다. 그런데 매번 클라이언트에서 요청이 올 때마다 각 로직을 담당하는 오브젝트를 새로 만들어서(싱글톤이 아니라 생각) 사용한다고 생각해보자. 아무리 자바의 오브젝트 생성과 가비지 컬렉션의 성능이 좋아졌다고 한들 너무 많은 요청은 서버가 감당하기 힘들 것이다. 우리가 알아야 할 것은 자바의 기본적인 싱글톤 패턴의 구현 방식의 단점이 있기 때문에, 스프링은 직접 싱글톤 형태의 오브젝트를 만들고 관리하는 기능을 제공하고 그것이 바로 "싱글톤 레지스트리 "라 한다. 싱글톤 레지스트리 장점 스태틱 메소드와 Priva..
2020.06.29 -
[Basic] SRP 단일 책임 원칙
SRP _ 단일 책임 원칙 하나의 모듈은 하나의, 오직 하나의 액터에 대해서만 책임져야 한다. 여기서 액터란 시스템이 동일한 방식으로 변경되기를 원하는 사용자 집단을 말한다. 즉, 액터란 하나의 사용자가 될 수 도 있고 여러 사용자가 모여서 하나의 액터가 될 수도 있다. EX) '스마트폰' 이라는 객체를 철수와 영희가 모두 사용하고 있다고 가정해보자. 철수는 스마트폰을 영상 시청을 위해서 사용하고, 영희는 스마트폰을 전화 통화를 위해서 사용 class 스마트폰 implements 동영상플레이어, 전화 { ... } 위의 스마트폰은 철수와 영희가 다른 방식으로 변경되기를 원할 수 있기 때문에 철수와 영희는 별개의 액터 철수가 만약 영상 시청을 위해서 스마트폰의 액정크기를 15인치로 바꾼다면 영희의 전화통화..
2020.06.29 -
[Basic] 객체지향 설계 원칙 (SOLID)
1. SOLID란? 이것은 객체지향 설계의 5원칙이라고 하며, 앞글자를 따서 SOLID라고 한다. 1. SRP(THhe Single Responsibility Principle) : 단일 책임 원칙 2. OCP(Open Closed Principle) : 개방 폐쇄 원칙 3. LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 4. ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 5. DIP(Dependency Inversion Principle) : 의존 역전 원칙
2020.06.29 -
[Basic] Cache
Cache를 왜 사용하는가? 한번 읽은 데이터를 임시로 저장하고 필요에 따라 전송,갱신,삭제하는 기술 보통은 데이터의 보관장소로 서버의 메모리를 사용하는 경우가 많다 그렇기 때문에 디스크에서 정보를 얻어오는 것보다 훨씬 빠른 입출력 성능을 얻을 수 있지만 서버가 다운되거나 재부팅되는 경우 사라지는 성격의 휘발성을 가진다. 임시적으로 보관하고 빠르게 그 정보에 접근하기 위한 용도로 사용해야 한다. 정보의 성격에 따라 설정으로 영구보관이나 오랜기간 유지가 가능하다. 단 이런 설정들이 꼭 필요하다면 Cache를 적용하는게 맞는지 한 번 타당성을 검토해 보는게 좋겠다. 쉽게 말한 Cache를 쓰는 목적 서버간 불필요한 트래픽을 줄여서 어플리케이션 서버의 부하 감소시킨다 어플리케이션의 빠른 처리성능(조회)을 확보..
2020.06.20 -
[Basic] Filter & Interceptor
Spring MVC 구조를 잘 알려주는 도식도로 Filter와 Interceptor의 실행 위치를 봐보자. Filter Dispatcher Servlet 이전에 실행 [ WAS내의 ApplicationContext에서 등록된 필터가 실행 된다. ] Application Context에 등록 된 필터가 요청 URL Pattern에 따라 실행 Spring Security, CORS Filter 등 구현 방법 package com.example.springstudy.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; package com.example.springstudy.fil..
2020.06.14 -
[Basic] 객체 지향 특성
객체 지향 프로그래밍(OOP : Object Oriented Programming)의 특성 1. 추상화 ( Abstaction ) 어떤 것을 필요로 하는 속성이나 행동을 추출하는 작업 사물들의 공통적인 특징, 즉 추상적인 특징을 파악해 인식의 대상으로 삼는 행위를 말한다. 구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념(클래스)로 다룬다. -> 각 객체의 구체적인 개념에 의존하지 않고 추상적인 개념에 의존해야만 설계를 유연하게 할 수 있다. 2. 캡슐화 ( Encapsulation ) 캡슐화는 정보 은닉을 통해 낮은 결합도와 높은 응집도를 갖도록 한다. 정보 은닉 필요가 없는 정보는 외부에서 접근하지 못하도록 한다. (prviate) private VS public 사용법 private 변하..
2020.06.10