[Spring]
[Spring] DI의 방법
PhoB
2023. 2. 7. 23:52
지난 포스팅에서 DI에 대해서 알아보았다. 그렇다면 이제 의존성 주입을 하는 방법에 대해서 알아보자.
[Spring] DI (Dependency Injection)
DI Dependency Injection 스프링의 근간을 이루는 중요한 개념 스프링4부터 DI사용을 권장 DI는 비단 스프링만이 사용하는 개념은 아니지만 스프링을 공부함에 있어서 꼭 알아야하는 중요한 개념이다. D
psh0036.tistory.com
1.생성자 주입 ( Constructor Injection)
- 말 그대로 생성자를 통해서 의존성을 주입하는 방법
- 테스트를 용이하게함
- 생성자가 1개만 존재할 경우 @Autowired 어노테이션 생략가능
- final키워드 선언 가능
@Service
public class Example {
private Di1 di_one;
private Di2 di_two;
@Autowired //생략가능
public Example(Di1 di_one,Di2 di_two) {
this.di_one = di_one;
this.di_two = di_two;
}
}
2. 수정자 주입 (setter Injection)
- 필드값을 변경하는 setter를 통해서 의존성을 주입하는 방식
- @Autowired 어노테이션 생략 불가능
- @Autowired로 주입할 객체가 없는 경우 에러발생 - 에러를 발생시키지 않으려면 @Autowired(required = false)로 무시가능
- final키워드 선언 불가능
@Service
public class Example {
private Di1 di_one;
private Di2 di_two;
@Autowired //생략 불가능
public void setDi1(Di1 di_one) {
this.di_one = di_one;
}
@Autowired //생략 불가능
public void setDi2(Di2 di_two) {
this.di_two = di_two;
}
}
3. 필드 주입(Field Injection)
- 필드에 바로 의존성을 주입하는 방식
- 3가지 방법중 가장 권장되지 않는 방식이다.
- 프레임워크 없이는 작동하지 않는다.
@Service
public class Example {
@Autowired
private Di1 di_one;
@Autowired
private Di2 di_two;
}
스프링에서 의존성 주입을 해주기전에 앞서 스프링 컨테이너에 bean등록을 해주어야한다.
bean을 등록하는 방법에에는
1. 직접 context파일에 bean을 등록해주는 방법
2. Annotation을 이용하는 방법(ex. @Bean , @Component 등등의 어노테이션이 있다.)