스프링 컨테이너에 어노테이션을 통해 빈을 등록하는 방법이 2가지이다.
1. @Bean 어노테이션을 통한 빈 등록 (메소드 레벨)
2. @Component 어노테이션을 통한 빈 등록 (클래스 레벨)
@Repository, @Service, #Controller 등 어노테이션은 @Component이 이미 포함된다.
여기서 @Component를 통해 등록된 빈은 다른 곳에서 @Autowired를 사용해 의존성을 주입할 수 있다.
@Component
public class A {
}
@Component
public class B {
@Autowired
private A a; // 컨테이너에서 A 타입의 빈을 찾아서 의존성을 주입한다.
}
}
@Autowired를 통한 의조선 주입 방법은 3가지이다.
생성자 주입, 수정자(Setter) 주입 혹은 메서드 주입, 필드 주입
1. 생성자 주입
클래스의 생성자에 @Autowired를 붙여 해당 클래스 타입의 필드들을 찾아 등록하도록 한다.
스프링에서 가장 권장하는 방법이다.
아래 코드는 Class2의 빈을 찾아서 알아서 주입해준다.
@Component
public class Class1 {
private Test test;
@Autowired
public Class1(Test test) {
this.test = test;
}
}
2. 생성자 (Setter) 주입, 메소드 주입
메소드에 @Autowired를 붙여 해당 클래스 타입의 빈을 찾아와 의존성을 주입한다.
수정 가능성이 있는 의존관계에 사용된다.
@Component
public class Class1 {
private Test test;
@Autowired
public void setField(Test test) {
this.test = test
}
}
3. 필드 주입
가장 간단한 방법으로 필드에 @Autowired를 붙여 의존성을 주입한다. 권장하지 않다.
@Component
public class Class1 {
@Autowired
private Test test;
}
'⚙️ 개발 > Spring' 카테고리의 다른 글
로드 밸런싱 (Load Balancing), 세션 클러스터링 (Session Clustering) (0) | 2024.06.13 |
---|---|
@RequiredArgsConstructor (0) | 2024.05.08 |
Validation (0) | 2024.05.02 |
messages (0) | 2024.05.02 |
[Tymeleaf] 체크 박스, 셀렉트 박스 (0) | 2024.05.02 |