[Way to PM] 백엔드(스프링부트) - IoC, DI, Bean

2024. 3. 8. 21:16[Way to PM] 백 엔드

Over View

해당 글은 스프링부트 프레임워크의 핵심 개념들 중 IoC, DI, Bean에 대해 다룹니다.


 

 자바를 이용한 웹어플리케이션 구축을 더 용이하게 해주기 위한 프레임워크인 '스프링'은 IoC(제어의 역전), DI(의존성 주입), Bean 등의 핵심 개념을 감싸고 있습니다. 이를 이해하기 위해 간단한 예제를 구축해보았습니다.

 

@RestController
    public class MemberController {

        @Autowired
        private MemberService memberService;	    // 빈 주입
        
        @GetMapping("/members")
        @ResponseBody
        public List<MemberDTO> getAllMembers() {
            return memberService.getAllMembers();
        }
    }

 

 Inversion of Control(제어의 역전)이란, 필요한 객체를 직접 생성하고 제어하는 것이 아니라, 외부에서 객체를 가져와서 사용하는 것을 말합니다.

 @Controller, @Service, @Repository 등을 통해 클래스 단위의 컴포넌트를 등록하고, @Bean(@Configuration 클래스에서 메서드 단위에 적용되는 어노테이션) 등을 통해 스프링 컨테이너에 객체를 빈으로 등록합니다. (빈은 쉽게 말해 스프링에서 제공해주는 객체)

 위의 코드를 참고하면, MemberService 객체를 getAllMembers() 메서드에 주입하기 위해 @Autowired 어노테이션을 이용합니다. 

  •  즉, @Service로 스프링 컨테이너에 빈으로 등록된 Memberservice를  (제어의 역전)
  • @Autowired를 통해 생성자를 생성할 필요없이 빈객체로 getAllMemebers메서드의 return값을 반환하기 위해 사용합니다.(의존성 주입, 빈)

정리하자면 제어의 역전이라는 개념은 컴포넌트 어노테이션이나 빈 어노테이션을 통해 클래스, 메서드 단위를 스프링 컨테이너에 등록하고, @Autowired를 통해 빈 객체라는 의존성을 주입함으로써 이루어집니다.