springframework

스프링 프레임 워크 핵심 기술 - 1.Ioc컨테이너와 Bean

Jungsoomin :) 2020. 8. 11. 01:57

스프링 프레임 워크 핵심기술은 Ioc(제어의 역전) 으로 불리는 DI(의존성 주입) 

 

“소규모 애플리케이션 또는 기업용 애플리케이션을 자바로 개발하는데 있어 유용하고 편리한 기능을 제공하는 프레임워크"

 

 

디자인 철학

● 모든 선택은 개발자의 몫. (예, 스프링이 특정 영속화 기술을 강요하지 않는다.) < 기술 비침투성.

● 다양한 관점을 지향한다. (유연성)

● 하위 호환성을 지킨다. (노력)

● API를 신중하게 설계 한다. (공들인다.)

● 높은 수준의 코드를 지향한다. (자랑)

 

 

IoC ( Inversion Of Controll ) 제어의 역전 : Dependency Injection (의존주입) 이라고도 하며, 의존객체를 직접 생성하는 것이 아니라 주입받아 사용함을 뜻한다.

 

장점으로는  메모리나 성능상으로 

 

스프링 IoC 컨테이너

● BeanFactory

● 애플리케이션 컴포넌트의 중앙 저장소.

● 빈 설정 소스로 부터 빈 정의를 읽어들이고, 빈을 구성하고 제공한다.

 

● 스프링 IoC 컨테이너가 관리 하는 객체.

● 장점

     ○ 의존성 관리

     ○ 스코프  <<< @Scope

               ■ 싱글톤: 하나

               ■ 프로포토타입: 매번 다른 객체

     ○ 라이프사이클 인터페이스 <<< 싱글톤 타입의 Bean 에 대해서는 스프링이 탄생부터 소멸까지 관리하는 것으로 기억함.

 

ApplicationContext <<<< 이녀석이 스프링컨테이너이다.

        ● BeanFactory

        ● 메시지 소스 처리 기능 (i18n) < ResrouceBundleMessageSource를 말씀하시는 듯...하다.

        ● 이벤트 발행 기능

        ● 리소스 로딩 기능

        ● ...

 

ApplicationContext의 역할에 대해 기억나는 대로 작성하면, 빈 객체(인스턴스) 생성, 의존관계 주입, 초기화 , 빈 제공(getBean) 이다.

 

@Component 스캔 은 @Component, @Service, @Controller, @Repository, @Configuration @Aspect...? 도 되던가?  이 붙은 클래스를 스프링의 Bean 으로 등록해 관리하에 두게하는 것으로 기억 중.

 

xml Config 에서는 <context:component-scan> 이고 java Config 에서는 @ComponentScan .

 

@ComponentScan 에노테이션 사용시 basePackages 속성보다 baseClasses 속성이 type-safe하므로 사용하자.

 

 


@SpringBootApplication  <<<</  /  @componentScan 과 @Configuration이 붙이있는 상태 즉 빈 설정파일이 됨