개발/Spring
(스프링 기본) 19 - 옵션 처리
개발하는 인사담당자
2024. 10. 28. 10:46
스프링 빈이 없어도 동작해야 할 때가 있다.
@Autowired 만 사용하면 required 옵션 기본값이 true 여서
자동 주입 대상이 없으면 오류가 발생한다.
즉 스프링 컨테이너에 빈이 등록되지 않고 자동 주입 대상이 없어도
동작해야 할 때 아래와 같이 처리하면 된다.
1. @Autowired(required=false) : 자동 주입 대상이 없으면 수정자 메서드(setter) 자체 호출 안됨
2. org.springframework.lang.@Nullable : 자동 주입할 대상이 없으면 null 이 입력
3. Optional<> : 자동 주입할 대상 없으면 Optional.empty 입력
※ 자바 8의 Optional 로, 상태 있을 수도 있고 없을 수도 있다는 상태를 Optional 로 감싼 것이다.
public class AutowiredTest {
@Test
void AutowirtedOption() {
ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class);//springBean으로 등록
}
static class TestBean {
@Autowired(required = false)
public void setNoBean1(Member noBean1) {
System.out.println("noBean1 = " + noBean1);
}
@Autowired
public void setNoBean2(@Nullable Member noBean2) {
System.out.println("noBean2 = " + noBean2);
}
@Autowired
public void setNoBean3(Optional<Member> noBean3) {
System.out.println("noBean3 = " + noBean3);
}
}
첫 번째 처럼 required = false 를 하게 되면 오류는 안나지만 메서드 자체가 아예 호출 안된다.
@Nullable 호출은 하되 없으면 null
Optional<> 은 없으면 Optional.empty 출력된다.
※ 여기서 Member 는 스프링 빈이 아니다.
출처 : 김영한 스프링 핵심 원리 - 기본편
스프링 핵심 원리 - 기본편 강의 | 김영한 - 인프런
김영한 | 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보
www.inflearn.com