[Spring] 의존성 주입하기

SCY·2023년 4월 9일
0
post-thumbnail

https://velog.io/@helenason/SW-dependency

위 글에서 의존성과 의존성 주입에 대해 작성해보았다. 해당 개념을 스프링에서는 어떻게 적용할 수 있을까.

의존성을 주입하기 위해 스프링에서는 보통 두 가지 방식을 사용한다.

  1. 컴포넌트 스캔을 통해 자동으로 의존관계 설정하기
  2. 별도의 구현을 통해 직접 스프링 빈 등록하기

컴포넌트 스캔

@Component라는 애노테이션이 존재하면 스프링 빈으로 자동 등록된다. @Controller, @Service, @Repository는 모두 @Component를 포함하기 때문에 해당 애노테이션을 달아주면 스프링 빈으로 등록할 수 있다.

각각에 맞는 애노테이션을 달아준 후 @Autowired 애노테이션을 생성자에 붙여줌으로써 객체가 생성될 때 스프링이 스프링 컨테이너에서 스프링 빈을 찾아 넣어줄 수 있도록 한다. 이러한 방식으로 스프링에서 의존성을 주입할 수 있다.

@Controller
public class MemberController {
 	private final MemberService memberService;
    
 	@Autowired
	public MemberController(MemberService memberService) {
		 this.memberService = memberService;
	}
}
@Service
public class memberService {}

위 두 코드를 통해 아래 그림의 하이라이트 부분의 의존관계가 완성된다.

직접 구현하기

@Configuration
public class SpringConfig {

 	 @Bean
	 public MemberService memberService() {
		 return new MemberService(memberRepository());
	 }
     
	 @Bean
	 public MemberRepository memberRepository() {
		return new MemoryMemberRepository();
	 }
}

위와 같이 별도 클래스에서 직접 코드를 작성하여 의존관계를 주입해줄 수도 있다.

profile
성장 중독 | 서버, 데이터, 정보 보안을 공부합니다.

0개의 댓글