일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Galera Cluster
- 파이썬
- mongoDB
- 디자인 패턴
- C
- Kafka
- spring webflux
- 알고리즘
- JPA
- MySQL
- OS
- Algorithm
- c언어
- react
- 운영체제
- Heap
- 백준
- 자바
- design pattern
- 컴퓨터구조
- Java
- 네트워크
- redis
- JavaScript
- MSA
- Spring
- Data Structure
- 자료구조
- Proxy
- IT
- Today
- Total
목록분류 전체보기 (214)
시냅스
팩토리 메소드 패턴 Factory method Pattern 인스턴스 작성을 하위 클래스에게 위임. Template Method 패턴을 인스턴스 생성에 적용 객체를 생성하기 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스에서 결정하게 함. 여러 상황에 따라 각각 생성될 수 있는 객체에 대한 생성을 하위 클래스에 위임 생성과 관련된 동일한 메서드는 상위 클래스에서 처리 객체를 만들어 반환하는 함수를 (생성자 대신) 제공하여 초기화 과정을 외부에서 보지 못하게 숨기고 반환 타입을 제어하는 방법. package factory; abstract class Car { String productName; public String toString() { return produ..
빈 스코프 Spring Bean Scope 빈이 존재할 수 있는 범위 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 웹 관련 스코프 request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프 session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프 application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 싱글톤 요청 싱글톤 스코프의 빈을 스프링 컨테이너에 요청한다. 스프링 컨테이너는 본인이 관리하는 스프링 빈을 반환한다. 이후에 스프링 컨테이너에 같은 요청이 와도 같은 객체 인스턴스의 스프링 ..
빈 생명주기, Bean Life Cycle - 싱글톤 빈 Singleton Bean 스프링 컨테이너 생성 스프링 빈 생성 의존 관계 주입 초기화 콜백 사용 소멸 전 콜백 스프링 종료 @Component public class OrderServiceImpl implements OrderService { @PostConstruct // annotation으로 객체 생성 후 실행할 함수 등록 public void init() { System.out.println("초기화 콜백"); } @PreDestroy // 객체 소멸 전 실행할 함수 등록 public void close() { System.out.println("소멸 전 콜백"); } } 빈 생명주기, Bean Life Cycle - Prototype b..
ComponentScan 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. ComponentScan은 Component가 붙은 모든 클래스를 스프링 빈으로 등록한다. 이때 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다. Autowired 생성자에 @Autowired를 지정하면 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입한다. 이때 기본 조회 전략은 타입이 같은 빈을 찾아서 주입한다. getbean(MemberRepository.class)와 동일하다고 이해하면 된다. 컴포넌트 스캔 기본 대상 @Componenet : 컴포넌트 스캔에서 사용 @Controller : 스프링 MVC 컨트롤러에서 사용 @Service : 스..
싱글톤 패턴 singleton pattern 이란 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 한다. private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다. public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 인스터스가 필요하면 이 static 메서드를 통해서만 조회하도록 허용한다. public static SingletonService getInstance() ..
스프링 빈 Spring Bean 이란? 스프링 컨테이너에 의해 관리되는 자바 객체(POJO, plain old java object) @Bean 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우 에 사용된다. 메소드 또는 어노테이션 단위에 붙일 수 있다. @Component 개발자가 직접 컨트롤이 가능한 클래스들의 경우에 사용된다. 클래스 또는 인터페이스에 붙일 수 있다. 스프링 컨테이너 Spring Container 란? 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 한다. IoC와 DI의 원리가 이 스프링 컨테이너에 적용된다. 스프링 컨테이너는 xml 기반으로 만들 수 있고, 에노테이션 기반의 자바 설정 클래스..
제어의 역전 IoC (Inversion of Control) 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 흐름은 컨테이너가 관리한다. 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라 한다. @Configuration public class AppConfig { @Bean public MemoryMemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public DiscountPolicy discountPolicy() { return new RateDiscountPolicy(); } @Bean public MemberService memberSer..
ARM (Adavanced RISC Machine) 진보된 RISC CPU이다. 정확히는 ARM 아키텍처를 설계하는 ARM 의 명령어 세트와 ISA(Instruction Set Architecture) 물리적 설계가 같아도 명령 집합이 다를 경우 서로 다른 칩이 된다. 스마트폰, 게임기 등 많은 임베디드 시스템에서 사용된다. 기본적인 호환성은 가지지만, 제품군이 파편화 되어있어 플랫폼 종속적이다. CISC 명령어의 집합이 크고, 가변길이의 명령어 연산에 사용되는 복잡한 명령어들을 마이크로 코드 형식으로 수백 개 이상 탑재 메인프레임, x86 계열 RISC CISC의 단점을 극복하기 위하여 고안됨 적은 수의 명령어만으로 명령어 집합을 구성 복잡한 연산도 적은 수의 명령어들을 조합하는 방식으로 수행 단순한..
SRP : 단일 책임 원칙 (single reponsibility principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호한데 클 수 있고, 작을 수 있다. 문맥과 상황에 따라 다르다. 중요한 기준은 변경에서 파급 효과가 적으면 단일 책임 원칙을 따르는 것이 좋다. 예) UI 변경, 객체의 생성과 사용을 분리 OCP : 개방-폐쇄 원칙 (Open/closed principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 다형성을 활용하여 하나의 인터페이스에 여러 클래스(구현체)를 할당할 수 있다. LSP : 리스코프 치환 원칙 (Liskov subsititution principle) 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타..
클래스 (Class) 객체의 청사진(Blueprint) 상태(클래스, 인스턴스 변수)와 행위(메서드)를 갖는 자바의 기본 단위 상속 (Inheritance) 상위 클래스의 변수와 메소드에 대한 사용권을 갖는 것 subclassing : 다른 클래스의 코드를 재사용할 목적으로 상속을 사용하는 경우 is - a 관계 어휘적 정의가 아닌 기대되는 행동에 따라 타입계층의 의미가 달라질 수 있음. 슈퍼타입과 서브타입 관계에서는 행동 호환성이 중요 subtyping : 타입 계층을 구성하기 위해 상속을 사용하는 경우 행동 호환성 두 타입 사이에 행동이 호환될 경우에만 타입계층으로 묶어야 한다. 동일한 메서드를 구현하면 행동을 호환하는것인가? 슈퍼클래스 (Super Class) 상속되는 클래스, 부모 클래스 서브클래..