[옵션 처리란?]
의존관계 주입 시 스프링 빈에 의존관계 등록이 제대로 되지 않는 경우가 있다. 그러나 우리는 계속해서 프로그램 작동을 시켜야 할 때도 있다. 그렇게 하기 위해서는 옵션 처리를 해주어야 할 경우가 생긴다. 그 경우에 대비해서 옵션처리 하는 방법을 알아보고자 한다.
[옵션처리의 3가지]
- @Autowired(required = false)
- 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안됨
- @Nullable
- 자동 주입할 대상이 없으면 null이 입력된다.
- Optional<>
- 자동 주입할 대상이 없으면 Optional.empty 가 입력된다.
[옵션 처리한 코드]
package hello.core.autowired;
import hello.core.member.Member;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.lang.Nullable;
import java.util.Optional;
public class AutowiredTest {
@Test
void AutowiredOption(){
ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class);
}
static class TestBean{
//required - 기본값 true
//의존관계가 없이도 작동하게 하기 위해서 수정자 자체를 호출하지 않게 함.
@Autowired(required = false)
public void setNoBean1(Member member1){
System.out.println("member1 = " + member1);
}
//호출은 되는데 대신 null로 들어온다.
@Autowired
public void setNoBean2(@Nullable Member member2){
System.out.println("member2 = " + member2);
}
//java8에서 제공하는 optional이라는 기능 자동주입 대상이 없으면 Optional.empty가 됨
@Autowired
public void setNoBean3(Optional<Member> noBean3){
System.out.println("noBean3 = " + noBean3);
}
}
}
[참고]
@Nullable, Optional은 스프링 전반에 걸쳐서 지원된다. 예를 들어서 생성자 자동 주입에서 특정 필드에만 사용해도 된다
[출처]
스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
'Back-End > Spring' 카테고리의 다른 글
[Spring][스프링 기본편] - 23. 롬복(Lombok)과 최신 트렌드 (0) | 2022.01.31 |
---|---|
[Spring][스프링 기본편] - 22. 생성자 주입을 사용해야 하는 이유(의존관계 설정) (0) | 2022.01.28 |
[Spring][스프링 기본편] - 20. 의존관계 주입 (0) | 2022.01.28 |
[Spring][스프링 기본편] - 19. 컴포넌트 스캔 (0) | 2022.01.27 |
[Spring][스프링 기본편] - 18. @Configuration과 싱글톤 (0) | 2022.01.26 |