김영한님 인강듣고/스프링 핵심원리-기본

스프링 핵심원리(기본) 총정리

doriver 2024. 3. 19. 19:26
스프링
'기능' 뿐만 아니라 '객체지향 원리' 관점도 신경을 써야함

 

 

다형성, 객체지향 설계
IoC , DI , 컨테이너

 

스프링컨테이너

org.springframework . context . ApplicationContext( interface ) ;

 

ApplicationContext  ac  =  new AnnotationConfigApplicationContext( 구성 정보 클래스 );

 

컴포넌트 스캔 , 스프링빈

 

빈 스코프

싱글톤 빈 , 의존관계 자동주입

빈 생명주기 콜백

스프링 부트는 웹 라이브러리가 없으면
AnnotationConfigApplicationContext 을 기반으로 애플리케이션을 구동한다. 

 

웹 라이브러리가 추가되면 웹과 관련된 추가 설정과 환경들이 필요하므로
AnnotationConfigServletWebServerApplicationContext 를 기반으로 애플리케이션을 구동한다.

 

    스프링부트 프로젝트에서 @SpringBootApplication , SpringApplication
     org.springframework . boot . autoconfigure.SpringBootApplication
     org.springframework . boot . SpringApplication 

 

스프링 빈

ac.getBean(빈 클래스 타입);

싱글톤 컨테이너

스프링컨테이너에서 싱글톤을 가능하게 하는 @Configuration( 바이트 코드 조작 )

컴포넌트 스캔 , @ComponentScan( 구성정보 클래스 )

@Component : 스프링 빈

@Autowired : 스프링빈 주입, 의존관계 자동주입

  스프링부트 프로젝트에서
    , @SpringBootApplication에 @ComponentScan이 들어있고 SpringApplication.run( ~ Application.class, args ) 

의존관계 자동 주입

스프링 컨테이너가 관리하는 스프링 빈이어야 동작
@Autowired
생성자 주입 권고
@RequiredArgsConstructor
빈 자동등록, 수동 등록

빈 생명주기 콜백

빈의 의존관계 주입이 완료되고 나서 그리고 죽기전에
  , 빈 내부 메서드를 호출해주는 기능
 
초기화 콜백, 소멸전 콜백
@PostConstruct, @PreDestroy

빈 스코프

빈이 스프링컨테이너에 
생성되는 시점, 생성 가능한 시점
존재하는 범위, 존재 가능한 범위

 

@Scope
싱글톤, 프로토타입, 웹관련

의존관계 조회(탐색) 
직접 필요한 의존관계를 찾는 것을 Dependency Lookup( DL )

ex) Provider , 프록시

Provider는 get메소드로 직접 빈을 얻어서 사용 
, 프록시는 프록시빈이 마치 진짜 빈인양 코딩
핵심은 빈 생성을 내가 원하는 시점( 생성가능한 시점 )에 할수 있다는 것