🧐강의🧐
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard
🚨 문제 상황 🚨
· 주입할 스프링 빈이 없어도 애플리케이션이 동작해야 하는 상황
· @Autowired 사용 시, 'required' 옵션 기본 값이 'true'로 되어 있어, 자동 주입 대상 없을 시 오류 발생
💡 해결 방법 💡
1️⃣ 호출 방지 : @Autowired(required = false)
2️⃣ null 호출 : @Nullable
3️⃣ Optional.empty 호출 : Optional< >
· test/java/hello.core/autowired/AutowiredTest
public class AutowiredTest {
@Test
void AutowiredOption() {
ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class);
}
static class TestBean {
// 1. 호출 안됨
@Autowired(required = false) // required 기본값은 true
public void setNoBean1(Member noBean1) {
System.out.println("noBean1 = " + noBean1);
}
// 2. null 호출
@Autowired
public void setNoBean2(@Nullable Member noBean2) {
System.out.println("noBean2 = " + noBean2);
}
// 3. Optional.empty 호출
@Autowired
public void setNoBean3(Optional<Member> noBean3) {
System.out.println("noBean3 = " + noBean3);
}
}
}
· 테스트 결과
참고
- @Nullable & Optional 은 스프링 전반에 걸쳐 지원됨
→ 생성자 자동 주입에서 특정 필드에만 사용 가능
'Spring > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글
[의존 관계 자동 주입] 조회할 빈이 2개 이상일 때 (4) | 2023.12.22 |
---|---|
[의존 관계 자동 주입] Lombok 적용하는 방법 (0) | 2023.12.20 |
[의존 관계 자동 주입] 생성자 주입 선택하기 (2) | 2023.12.18 |
[컴포넌트 스캔] 필터 - includeFilters, excludeFilters (2) | 2023.12.07 |
[컴포넌트 스캔] 기본 스캔 대상 (1) | 2023.12.07 |