Spring | IOC

DoItDev·2021년 9월 8일
1
post-thumbnail

IOC란?

  • inversion of control 의 약자이다.
  • 해석을 하면 통제의 역전 이라는 뜻이 된다.
  • 즉 직설적인 해석을 하면 제어권이 역전이된다는 뜻이다.
  • 객체나 메소드의 호출을 개발자가 결정하는 것이 아니라 외부의 개입으로 인하여 결정이된다.

Note: ioc의 장점

  • 업무 수행과 업무 수행의 분리
  • 서로 다른 구현 간에 보다 쉽게 전환
  • 프로그램의 더 큰 모듈화
  • 구성요소를 분리하거나 구성요소의 종속성을 조롱하고 구성요소가 계약을 통해 통신할 수 있도록 허용함으로써 프로그램 테스트의 용이성 증대

IOC흐름

  1. 객체의 생성
  2. 의존성 객체 주입 (스프링에게 위임하여 스프링이 만들어 놓은 객체에 주입한다)
  3. 읜존성 객체 메소드 호출

Note:

  • 스프링은 모든 의존성 객체를 스프링이 실행될때 만들어 주고 필요한 곳에 주입 해준다.
  • 이러한 bean 들은 싱글턴 패턴의 특징을 갖으며 개발자가 컨트롤을 하는 것이 아닌 스프링에게 맡켜서 작업을 처리 한다.

화면 캡처 2021-09-07 154645


Bean란?

Note:

  • 사용법에 앞서서 bean 이 무엇인지 알고 가야한다.
  • Spring ioc 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 부른다.
  • new 키워드를 사용하는 객체가 아닌 Spring 에서 ApplicationContext 가 만들어주고 담고있는 것을 빈이라고 한다.

어떻게 사용을 하나?

  1. 빈설정 파일에 직접 빈을 등록하는 방법

@Configuration
public class ExConfiguration {
    @Bean
    public ExSample toTest() {
        return new ExSample();
    }
}

@Configuration 을 이용해서 @Bean 을 사용하면 된다.

아래에 사진에서 @Component 를 주목 해야된다.

화면 캡처 2021-09-07 152550

  1. @ComponentScan 을 이용하는 방법

@ComponentScan@Component 을 이용하는 방법이다.

@ComponentScan 의 정의는 @Component 을 스캔한다는 의미에 있으며 @Component 의 경우 Bean 을 등록할때 사용한다.

spring 은 언제 스캐닝을 자동으로 하는가에 질문에 답은 아래의 사진으로 보여진다.

화면 캡처 2021-09-07 153238

@SpringBootApplication@ComponentScan 있기 때문에 우리가 설정 어노테이션과 빈 어노테이션을 이용했을때 안에 @Component 가 있기 때문에 bean 이 주입이 되는 것이다.

일전에 다루었던 어노테이션 또한 @Component 상속이 되어 있기 때문에

개발자가 단순한 어노테이션을 사용해서 bean 을 등록이 가능하다.

profile
Back-End Engineer

0개의 댓글