개발/spring

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

소확행개발자 2018. 10. 13. 19:02

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으로 등록한 객체를 클래스에서 사용할때 등록하는 개념입니다. 


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