Skip to content

hj0328/spring-basic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

스프링 핵심원리 기본

스프링의 핵심원리 이해와 스프링 기본기를 다지기 위한 프로젝트 객체지향 특성 기반과 예제 및 테스트 코드로 스프링 프레임워크에 대해 학습

핵심

  • 자바 기반의 프레임워크
  • 자바의 가장 큰 특징인 객체지향언어
  • 스프링은 객체지향언어 특성을 잘 살려낸 프레임워크
  • 그렇기에 좋은 객체 지향 애플리케이션을 개발할 수 있도록 도와준다

요약

스프링 컨테이너와 스프링 빈

  • 스프링 컨터이너가 프로그램의 제어 흐름을 담당하여 의존관계 주입
    • 확장에는 열리고 변경에는 닫힌 OCP(Open/Closed principle) 만족. 인터페이스를 구현하면 컨테이너에 등록하면 확장이 용이하다. 그리고 컨테이너가 직접 빈을 등록시키기 때문에 클라이언트 코드는 변경에 닫혀있다.
    • 추상화에 의존하는 DIP(Dependency inversion principle) 만족. 클라이언트 코드는 추상화(인터페이스)에만 의존하여도 구현 클래스의 수정 및 변경에 영향을 받지 않는다.
    • 스프링 빈은 이름, 타입, 부모 타입으로도 조회가 가능하다.
  • 어노테이션 기반으로 빈, 설정 등록
  • ApplicationContext 컨테이너는 빈을 관리하는 BeanFactory와 부가기능을 제공하는 다양한 인터페이스를 상속받는다.
  • ApplicationContext 인터페이스를 구현하는 방법에 따라 다양하게 스프링을 구현할 수 있다. 그렇기 때문에 XML 기반으로 빈 등록, 어노테이션 기반 빈 등록 등 여러 방법으로 빈을 등록할 수 있다.
  • 스프링 빈을 기본적으로 싱글톤으로 관리한다. 그렇기 때문에 stateless 무상태로 설계해야 한다. 공유 값을 설정하면 큰 장애가 발생할 수 있다.

컴포넌트 스캔

  • 스프링 빈 등록 대상을 스캔한다.
  • 컴포넌트스캔은 기본적으로 @ComponentScan이 적용된 클래스 패키지에서 스캔한다. 관습적으로 프로젝트 시작 루트에 위치한다.
  • @Controller, @Service, @Repository, @Configuration도 빈 등록 대상으로 타고 들어가면 @Component이 등록되어 있다.

의존관계 자동 주입

  • 스프링 컨테이너가 의존관계를 자동으로 주입하는 방식으로 생성자, setter, 필드, 일반 메서드 주입 4가지가 있다.
  • 생성자 주입 방식을 권장한다. 이유는 누락방지와 final 키워드로 중간 변경을 방지할 수 있다. 또한 순수 자바 기반의 테스트 코드를 작성할 때 프레임워크없이 코드 작성이 가능하다.
  • 조회 빈이 둘 이상일 때 @Qualifier, @Primary를 이용하여 오류를 해결할 수 있다.

자동 등록 빈과 수동 등록 빈

  • 자동 등록 빈은 @Component(@Service, @Controller, @Repository) 으로 자동으로 스캔하는 것으로 업로 로직에서 주로 사용한다. 자동 등록은 설정에서 하나하나 등록하지 않아도 되는 장점이 있다.
  • 수동 등록 빈은 @Configuration 설정 정보에서 @Bean 으로 등록하는 것을 말한다. 수동 등록은 한 곳에서 등록된 빈들을 모두 관리할 수 있는 장점이 있다. 주로 기술적인 문제나 공통 관심사 AO를 처리할 때 사용된다.

빈 생명주기 콜백

  • 빈은 라이프사이클에 따라 초기화 콜백과 소멸 전 콜백 두 가지 콜백을 제공한다.
  • @PostContruct, @PreDestroy 적용하여 콜백함수를 구현할 수 있으며, 이 방법이 현재 스프링에서 권장하는 방법이다.

빈 스코프

  • 빈 스코프는 빈이 유지되는 범위를 의미한다. @Scope(”종류”)
  • 싱글톤, 프로토타입, 웹 관련 스코프로 크게 3가지 있다.
    • 싱글톤은 기본 스코프로 컨테이너 시작과 종료까지 가장 넓은 범위 스코프다.
    • 프로토타입은 빈의 생성과 초기화까지만 컨테이너가 관리하는 스코프다. 그렇기 때문에 소멸 전 콜백은 호출되지 않는다.
    • 웹 관련 스코프로는 핵심적으로 request 스코프가 있으며, 웹 요청이 들어오고 나갈 때까지만 유지된다. 객체 조회를 정말 필요한 시점까지 지연처리가 가능하다는 장점이 있다. 적용 예시로 웹 요청 별 로그를 기록할 수 있다.

About

예제를 이용한 스프링 기본 정리

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages