분류 전체보기

SpringBoot/기본 원리

[spring boot 기본 원리] 의존관계 자동 주입

1. 다양한 의존관계 주입 방법 - @Autowired Annotation을 이용하여 의존관계를 주입한다. - 의존관계 자동 주입은 스프링 컨테이너가 관리하는 스프링 빈이어야 동작한다. (스프링 빈이 아닌 클래스에 @Autowired를 적용해도 동작하지 않는다.) - 의존관계 주입 방법에는 크게 4가지 방법이 있다. 1) 생성자 주입 2) 수정자 주입(setter 주입) 3) 필드 주입 4) 일반 메서드 주입 1-1 생성자 주입 - 생성자를 통해서 의존관계를 주입 받는 방법이다. - 생성자 호출 시점에 딱 1번만 호출되는 것을 보장받는다. - 필드에 final 키워드를 사용할 수 있다. 그래서 생성자에서 혹시 값이 설정되지 않았을 경우, 오류를 컴파일 시점에서 막아준다. - 불변, 필수 의존관계에 사용 ..

SpringBoot/기본 원리

[spring boot 기본 원리] 컴포넌트 스캔

1. 컴포넌트 스캔과 의존관계 자동 주입 1-1 컴포넌트 스캔 - 컴포넌트 스캔 : 설정 정보 없이 자동으로 스프링 빈을 등록하는 기능 - @Autowired : 의존 관계를 자동으로 주입해주는 Annotation - 아래 코드로 컴포넌트 스캔의 예시를 보자 @Configuration @ComponentScan( excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppConfig { } - 컴포넌트 스캔을 사용하려면 먼저 @ComponentScan을 설정 정보 클래스에 붙여준다. - excludeFilters : 컴포넌트 스캔을 사용하면 @Configuration이 붙은..

SpringBoot/기본 원리

[spring boot 기본 원리] 싱글톤

1. 웹 애플리케이션과 싱글톤 - 웹 어플리케이션은 보통 여러 사용자가 동시에 요청을 한다. 물론 PC의 특성 상 완벽한 동시는 거의 불가능하다고 하지만 동시에 요청한다고 가정하자. - 위 그림의 경우 클라이언트 A, B, C가 스프링 컨테이너(DI 컨테이너)에 요청을 하면 새로 new를 하여 반환하는 구조이다. - 이렇게 동작한다면 요청이 올 때마다 새로운 구현 객체를 생성하므로 메모리 낭비가 발생한다. * 싱글톤 패턴 - 싱글톤 패턴이란 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. - 인스턴스가 1개만 있어야 하므로 다른 클래스에서 생성하지 못하도록 막아야 한다. - 즉 private 생성자를 사용하여 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야 한다. - 아래..

알고리즘/DP

[BOJ] 백준 1904 - 01타일 풀이

1. 문제 https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 2. 풀이 백준 알고리즘 분류에 다이나믹 프로그래밍(DP)로 분류되어 있는 문제이다. 이 문제에서는 N이라는 크기가 주어질 때 "00" 타일과 "1" 타일로 만들 수 있는 경우의 수를 구하는 문제이므로 dp[N] = 만들 수 있는 경우의 수로 설정했다. (1) N = 1 - "00"은 최소 크기가 2이므로 사용할 수 없고 "1" 하나만 사용할 수 있다. - dp[1] = 1 (2) N = 2..

SpringBoot/기본 원리

[spring boot 기본 원리] 스프링 컨테이너와 스프링 빈

1. 스프링 컨테이너 스프링 컨테이너는 아래와 같은 코드로 만들 수 있다. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(설정 클래스이름.class); - 이 ApplicationContext를 스프링 컨테이너라고 부른다. - ApplicationContext는 인터페이스 이며 XML 기반으로 만들 수 있고, 자바 설정 클래스로 만들 수 있다. 2. 스프링 컨테이너의 생성 과정 2-1 스프링 컨테이너 생성 스프링 컨테이너는 다음과 같은 순서로 생성된다. 1) new를 하여 스프링 컨테이너를 만든다. 2) 스프링 컨테이너 안에는 스프링 빈 저장소라는 것이 있는데 스프링 빈이 여기에 저장된다. 이때 빈 이름이 Ke..

SpringBoot/기본 원리

[Spring Boot 기본 원리] IoC, DI, 컨테이너

1. IoC (Inversior of Controll) IoC를 구글링 해보면 반복적으로 나오는 말이 제어의 역전이다. 이 제어의 역전은 어떤 것을 의미할까? 자바를 포함한 객체 지향 언어에는 Class, Object, Instance가 있다. Class는 쉽게 설계도, Object는 실체화가 가능한 것, Instance는 실체화된 것으로 비유할 수 있다. Object를 직접 new를 하여 Heap 메모리에 올리게 되는데 IoC는 Object들을 스캔하여 Heap 메모리에 등록한다. 즉 개발자가 직접 하는 일을 대신 해준다는 것이다. 조금 더 자세하기 얘기해보자!! 어떤 프로그램에서 클라이언트 객체가 스스로 필요한 서버 객체를 생성하고 연결하고 실행했다고 가정하자. 이 말은 객체가 프로그램의 제어 흐름을..

알고리즘/그래프

[BOJ] 백준 13565 - 침투 풀이

1. 문제 https://www.acmicpc.net/problem/13565 13565번: 침투 첫째 줄에는 격자의 크기를 나타내는 M (2 ≤ M ≤ 1,000) 과 N (2 ≤ N ≤ 1,000) 이 주어진다. M줄에 걸쳐서, N개의 0 또는 1 이 공백 없이 주어진다. 0은 전류가 잘 통하는 흰색, 1은 전류가 통하지 않 www.acmicpc.net 2. 풀이 DFS로 문제를 해결하였다. 주어진 1과 0을 2차원 배열에 넣었다고 가정한다면 문제에서 말하는 가장 바깥쪽은 배열의 첫번째 행, 가장 안쪽은 배열의 마지막 행이된다. DFS를 돌릴 때 Main 함수에서 배열의 첫 번째 행을 반복으로 돌리면서 DFS를 탐색해주고 DFS 함수 안에서 탐색을 진행하던 도중 인자로 받은 x 값이 마지막 행에 도착..

Computer Science (CS)

SOLID - 좋은 객체 지향의 설계의 5가지 원칙

# SOLID 원칙이란? - 로버트 C.마틴 (Robert C.Martin)이 정리한 원칙으로 소프트웨어 작업에서 프로그래머가 소스 코드를 읽기 쉽고 확장하기 쉽게 될 때까지 소스 코드를 리팩토링하여 정리하기 위한 지침이다. - 이 원칙에는 크게 5가지 원칙이 존재한다. (1) SRP : 단일 책임 원칙 (Single Responsibility Principle) (2) OCP : 개방 폐쇄 원칙 (Open/Closed Principle) (3) LSP : 리스코프 치환 원칙 (Liskov Substitution Principle) (4) ISP : 인터페이스 분리 원칙 (Interface Segregation Principle) (5) DIP : 의존관계 역전 원칙 (Dependency Inversio..

송승현(SSH)
'분류 전체보기' 카테고리의 글 목록 (12 Page)