[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를 통해 빈 객체라는 의존성을 주입함으로써 이루어집니다.
'[Way to PM] 백 엔드' 카테고리의 다른 글
[Way to PM] 백엔드(스프링부트) - .yml 파일에 MyBatis 적용 시 띄어쓰기의 중요성 (0) | 2024.03.09 |
---|---|
[Way to PM] 백엔드(스프링부트) - MVC (3) | 2024.03.09 |
[Way to PM] 백 엔드(스프링부트) - WAS, SERVLET, TOMCAT (0) | 2024.03.05 |
[Way to PM] 백 엔드 - Spring Boot 호환성 해결 (0) | 2024.02.28 |
[Way to PM] 백엔드(자바) - Collection(List, Set, Map)의 특성 (0) | 2024.02.21 |