Spring

Spring/이론

빈 스코프(Bean Scope)란?

빈 스코프란? - 빈의 수명 범위(언제부터 언제까지 살아 존재하는가에 대한 범위) - 직독직해하면 빈의 범위라는 의미이다. - 싱글톤이 아닌 방법으로 빈을 구성해야 하는 경우 구분하기 위해 스프링에서 scope라는 키워드를 사용 빈 스코프의 종류 - 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. - 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. - 웹 관련 스코프 - request: 웹 요청이 들어오고 나갈때 까지 유지되는 스코프이다. 단일 Bean 정의의 범위를 단일 HTTP 요청의 수명 주기로 지정 - session: 웹 세션이 생성되고 종료될 때 까지 유지되는 스코..

Spring/이론

컴포넌트 스캔

컴포넌트 스캔 - 스프링은 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다 - 컴포넌트 스캔을 사용하려면 @ComponentScan을 설정 정보에 붙여주면 된다. package hello.core; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import static org.springframework.context.annotation.ComponentScan.*; @Configuration // @Componen..

Spring/이론

싱글톤 컨테이너(Spring)

웹 애플리케이션 - 스프링은 기업용 온라인 서비스 기술을 지원하기 위해 만들어졌다. - 스프링 애플리케이션은 웹 애플리케이션이 대부분이지만 웹이 아닌 애플리케이션 개발도 가능하다. - 클라이언트가 요청을 할 때마다 DI컨테이너(AppConfig)는 새로운 인스턴스를 만들어서 반환한다. - 트래픽이 초당 100개면 초당 100개의 객체가 생성되고 소멸됨 -> 자원의 낭비 - 생성된 인스턴스를 공유하면 됨: 싱글톤 패턴 package hello.core.singleton; import hello.core.AppConfig; import hello.core.member.MemberService; import org.junit.jupiter.api.DisplayName; import org.junit.jupit..

Spring/이론

제어의 역전(IoC) & 의존관계 주입(DI)

제어의 역전(Inversion of Control) - AppConfig와 같이 기획자가 프로그램에 대한 제어 흐름 권한을 가져가는 것을 제어의 역전이라고 한다. * 프레임워크 vs 라이브러리 * - 내가 작성한 코드를 제어하고 대신 실행까지 하면 프레임워크다. (JUnit -> @Test 안의 내용만 개발자가 작성. 알아서 테스트 시켜줌.) - 내가 작성한 코드가 직접 제어의 흐름을 담당한다면 라이브러리다. 의존관계 주입(Dependency Injection) - 정적인 클래스의 의존 관계, 실행 시점에 결정되는 동적인 객체(인스턴스)의 의존 관계 - 정적인 클래스의 의존 관계: import 코드로 파악 가능. 클래스 다이어그램. - 동적인 객체(인스턴스)의 의존 관계: 실제 생성된 객체 인스턴스의 참..

Spring/이론

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

SRP(Single Responsibility Principle) 단일 책임 원칙 - 한 클래스는 하나의 책임만 가져야 한다. - 하나의 책임은 클 수도 있고, 작을 수도 있고, 문맥과 상황에 따라 다르다. - 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 된다. OCP(Open/Closed Principle) 개방-폐쇄 원칙 - 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. - 다형성을 활용하면 되지만 다형성만으로는 지켜질 수 없다. - 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능을 구현 - 역할과 구현의 분리가 가장 중요한 원칙이다. - 구현 객체를 변경하려할 때 클라이언트 코드는 변경되면 안된다. LSP(Liskov Substitution Pri..

레이튼
'Spring' 카테고리의 글 목록 (4 Page)