ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] 스프링/스프링컨테이너/스프링빈 이란?
    Backend/Spring 2022. 5. 9. 23:27

    스프링

    • 스프링 DI(Dependency Injection) 컨테이너 기술
    • 스프링 프레임워크
    • 스프링 부트, 스프링 프레임워크 등을 모두 포함하는 스프링 생태계

    자바 언어 기반의 프레임 워크로서 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크이다. 객체 지향 프로그래밍의 추상화, 캡슐화, 상속, 다형성을 보장한다. 그 중 다형성은 제어의 역전, 의존 관계 주입을 통해 역할과 구현을 편리하게 다룰 수 있도록 지원한다. 

     

     

    스프링 컨테이너

    자바 객체(Bean)의 생명 주기를 관리하며 생성된 자바 객체드레게 추가적인 기능을 제공한다. 제어흐름을 외부에서 관리할 수 있게 해주며 객체들 간의 의존관계를 런타임에 만들어준다. 

    종류에는 2가지가 있다.

     

    1. BeanFactory

    빈 등록, 생성, 조회 등 관리하는 역할로 AppConfig에 Bean 정의 후 getBean()을 통해 필요한 스프링 빈 객체를 찾을 수 있다. getBean() 호출된 시점에서야 해당 빈을 생성한다.

     

    2. ApplicationContext

    BeanFactory의 기능을 상속받고 부가적인 기능을 제공한다. Context 초기화 시점에 모든 싱글톤 빈을 미리 로드한 후 애플리케이션 가동 후에는 빈을 지연없이 받는다.

     

    Configuration Metadata

    • 스프링의 ApplicationContext가 실제 만들어야할 빈 정보를 받아오는 곳
    • 이를 이용해서 IoC컨테이너에 의해 관리되는 객체들을 생성하고 구성
    • xml 기반 : GenericXmlApplicationContext
    • java 기반 : AnnotationConfigApplicationContext
    • xml보다는 java 기반으로 많이 사용

     

    스프링 빈

    Spring IoC 컨테이너가 관리하는 자바 객체이다.

     

    spring bean을 Spring IoC 컨테이너에 등록하는 방식은 두가지가 있다.

     

    1. ComponentScan - Annotation 사용

    • 스프링이 직접 클래스를 검색해서 빈을 등록해주는 기능
    • 설정 클래스에 빈을 직접 등록하지 않아도 원하는 클래스를 빈으로 등록
    • stereotype annotation을 이용하여 스프링이 자동으로 등록될 빈을 찾을 수 있음
    • 스프링에 다양한 stereotype의 annotation이 있는데 UML에서처럼 모든 빈을 동일시 하지 않고 용도에 맞게 분류
    @Component : any component
    
    @Repository : data access
    
    @Service : service classes
    
    @Controller : spring mvc
    
    @Configuration : java config

     

    • @Autowired : 객체 생성 시점에 스프링이 연관된 스프링 빈을 스프링 컨테이너에서 찾아서 주입(DI)

     

    2. Bean Configuration File에 직접 bean 등록

    • Annotation없이 SpringConfig에서 @Bean을 통해 등록

     

     

    댓글

Designed by Tistory.