스프링 의존관계 주입
- 스프링 @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 |
댓글