안녕하세요!
오늘 들은 강의에서 스프링 빈, 의존관계에 대하여 배웠는데
알고있었지만 설명하라고 하면 생각 안날 것 같으니 적어둘게요!
✔ 개념
Spring Bean?
Spring 컨테이너가 관리하는 자바 객체를 Bean 이라고 합니다.
IoC (Invertion of Control 제어의 역전) : 객체의 제어권 즉, 생성 및 관리를 프레임워크(여기선 spring) 에게 맡기는 것 입니다.
따라서 우리는 Spring Bean 을 Spring Ioc 컨테이너에 등록하여 사용해야 합니다.
✔사용방법
컨테이너에 bean을 등록하는 방법에는 자바 코드로 직접 스프링 빈을 등록하는 방법과 @Autowired 을 사용한 주입 방법이 있습니다.
1. @Component 사용 (컴포넌트 스캔)
@Component 어노테이션이 있으면 스프링 빈으로 자동으로 등록됩니다.
흔히 아는 @Controller, @Service, @Repository 어노테이션이 @Component 어노테이션을 포함하고 있습니다.
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
2. Bean Configuration 파일에 코드 작성
생성자에 @Autowired 를 사용하면 객체 생성 시점에 스프링 컨테이너에서 해당 스프링 빈을 찾아서 주입합니다.
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
DI 에는 필드 주입, setter 방식, 생성자 주입 세가지가 있습니다.
이 중 생성자 주입을 가장 많이 사용합니다.
// 필드 주입
@Autowired
private MemberService memberService
// setter 주입
@Autowired
public void setMemberSerivce(MemberService memberService) {
this.memberService = memberService;
}
// 생성자 주입
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
✔참고
김영한님 스프링 입문 강의
'개발 > SpringBoot' 카테고리의 다른 글
[오류/해결] Could not resolve org.springframework.boot:spring-boot-gradle-plugin (0) | 2023.04.23 |
---|---|
[h2 Database] 터미널로 h2 데이터 베이스 실행 하기 (0) | 2022.12.22 |
[springboot] test case @Aftereach 어노테이션 (0) | 2022.12.18 |
[SpringBoot] 스프링부트 jar 파일 터미널에서 명령어로 빌드하기 (0) | 2022.12.18 |
[오류] No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.0 was found. (0) | 2022.12.18 |