개발/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으로 등록한 객체를 클래스에서 사용할때 등록하는 개념입니다.
아직까지 초보라 전체적인 이해는 이렇고 잘못된게 있을 수 있습니다. 제 글을 보는사람은 많이 없겠지만 불편러들 지적해주시면 감사하겠습니당.