본문 바로가기
  • Where there is a will there is a way.
개발/spring

spring 제어의 역전과 의존성 주입

by 소확행개발자 2018. 10. 13.

spring 제어의 역전과 의존성 주입

깊이낮은 개발자라서 아직 모든게 낯설고 spring boot가 익숙하지 않습니다. 그래서 제가 이해하고 정리를 위해서 간단하게 spring boot 의 동작원리에 대해서 정리해보고자 합니다.


IoC 제어의 역전


spring boot 에서 application 을 run 하게 되면 처음에 


spring annotation 에서 등록한 @Controller / @Service / @Componet / @Configuration 에 의해서 클래스가 등록된다. 이렇게 어노테이션으로 등록한 클래스는 스프링이 관리한다? 그래서 제어의 역전이라고 한다고 이해했습니다. 


여기서 IoC 는 자세하게 들어가면 annotation으로 등록방법과 bean 등록방법이 있다고 알고 있고 bean과 annotaion으로 사용하면 각각 장단점이 있습니다.


의존성 주입 DI

spring 은 필요한 싱글톤 방식으로 관리?를 한다.

그래서 객체를 여러군데서 공통적으로 사용할 경우 이를 클래스에 @Configuration 으로 설정해 두고 @Bean으로 메소드의 return값을 설정하여 의존성을 주입할 수 있다고 표현한다. 

쉽게 정리해서 말하면 공통으로 사용하는 유틸이나 라이브러리를 사용하거나 클래스를 사용하려고 할 때 등록할 경우 사용한다.

@Component : 디폴트 어노테이션으로 IoC 컨테이너에 싱글톤으로 빈등록 한다.

 @Configuration @Bean : 위의 설명

@Controller / @RestController : 디스페쳐서블릿 ? 서블릿 ? 에 사용할 어노테이션으로 알고있음..

@Service : 서비스를 등록

@Autowired 

개발하다보니 @autowired 와 @Bean 헷갈리더라구요 

제가 이해한 바로는


autowired는 단순히 객체 new 가 아니라 spring에서 bean으로 등록한 객체를 클래스에서 사용할때 등록하는 개념입니다. 


아직까지 초보라 전체적인 이해는 이렇고 잘못된게 있을 수 있습니다. 제 글을 보는사람은 많이 없겠지만 불편러들 지적해주시면 감사하겠습니당.

'개발 > spring' 카테고리의 다른 글

스프링 시큐리티에 대한 이해  (0) 2019.01.15
spring OAuth server 구성  (0) 2019.01.10
spring 이란 무엇인가  (0) 2018.12.09
rabbitmq microservice 스프링 부트  (0) 2018.11.28
gson으로 spring에서 http 객체 파싱하기  (1) 2018.10.05

댓글