본문 바로가기
프로그래밍언어/Java

[Java] 스프링 의존관계 주입

by Yikanghee 2022. 1. 21.

스프링 의존관계 주입

  • 스프링 @Bean을 사용하여 의존관계를 주입하는 방법이 있다
  • 스프링 @Autowired 를 사용하여 자동으로 의존관계를 주입하는 방법이 있다

먼저 @Bean을 사용하여 의존관계를 주입해주는 방법이다

@Configuration
public class AppConfig {
 
@Bean
 public MemberService memberService() {
 return new MemberServiceImpl(memberRepository());
 }
}

이 방법을 썼을 때 어노테이션을 일일이 정리해주는 고생을 해야 한다

그래서 스프링에서 의존관계를 자동으로 주입해주는데 @ComponentScan ,@Autowired을 사용한다

@Configuration
@ComponentScan
public class AutoAppConfig {
 
}

ComponentScan을 사용하여 @Component 어노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록한다

@Component
public class MemoryMemberRepository implements MemberRepository {}

이렇게 Component 선언을 해주면 자동으로 빈으로 등록해주고

이전에는 @Bean으로 직접 의존 관계를 명시했지만 이제는 @Autowired를 사용하여 의존관계를 자동으로 주입해준다

  • Autowired
    • 의존관계를 자동으로 주입해준다
    • 생성자에서 여러 의존 관계도 한 번에 주입받을 수 있다
    • ComponentScan의 역할이 component가 붙은 모든 클래스를 스프링 빈으로 등록한다면
    • Autowired는 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입한다
    • 생성자에 파리 미터가 많아도 다 찾아서 자동 주입한다

사용법

@Component
public class MemberServiceImpl implements MemberService {
 private final MemberRepository memberRepository;
 
@Autowired
 public MemberServiceImpl(MemberRepository memberRepository) {
 this.memberRepository = memberRepository;
 }
}

생성자 의존 관계 주입을 사용하여 생성자 위에 어노테이션 해주면 된다

'프로그래밍언어 > Java' 카테고리의 다른 글

[Java] 스프링 컨테이너  (0) 2022.01.21
[Java] 빈 스코프  (0) 2022.01.21
[Java] 롬북 lombok  (0) 2022.01.21
[Java] 스프링 빈 옵션처리  (0) 2022.01.20
[Java] ComponentScan 개념  (0) 2022.01.20

댓글