Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- HTTP
- TCP/IP
- 토마토
- 열혈 TCP/IP 소켓 프로그래밍
- 2475번
- Operating System.
- OS
- redis
- 우아한레디스
- inflearn
- 스프링 입문
- n타일링2
- 제프리리처
- 우아한 테크 세미나
- Window-Via-c/c++
- Operating System
- Spring
- 운영체제
- 에러핸들링
- BOJ
- 김영한
- 열혈 tcp/ip 프로그래밍
- 10026번
- C++
- 윤성우 저자
- C#
- FIFO paging
- Four Squares
- 스프링 핵심 원리
- 이펙티브코틀린
Archives
- Today
- Total
나의 브을로오그으
#7-2. [스프링 핵심 원리-기본편] - 옵션 처리 본문
옵션 처리
주입할 스프링 빈이 없어도 동작해야 할 때가 있다.
그런데 @Autowired만 사용하면 required옵션의 기본값이 true로 되어 있어서 자동 주입 대상이 없으면 오류가 발생한다.
- 자동 주입 대상을 옵션으로 처리하는 방법
* @Autowired(required = false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안됨.
* org.springframework.lang.@Nullable : 자동 주입할 대상이 없으면 null 입력
* Optional<> : 자동 주입할 대상이 없으면 Optional.empty가 입력됨.
@Autowired(required = false)
public void setNoBean1(Member member) {
System.out.println("setNoBean1 = " + member);
}
//null 호출
@Autowired
public void setNoBean2(@Nullable Member member) {
System.out.println("setNoBean2 = " + member);
}
//Optional.empty 호출
@Autowired(required = false)
public void setNoBean3(Optional<Member> member) {
System.out.println("setNoBean3 = " + member);
}
1번째 required = false의 경우 만약 인자로 들어온 객체가 스프링 빈으로 등록되어있지 않다면, 이 setter 메서드 자체가 호출되지 않음.
2번째는 호출은 되는데, member가 스프링 빈으로 등록되어 있지 않으므로 오류가 나야 하지만, @Nullable애노테이션이 있기 때문에 호출은 되지만 null로 들어온다.
3번째는 자바8부터 추가된 문법으로 스프링 빈으로 등록되어 있다면 Optional로 감싸서 들어오고, 아니면 Optional.empty()로 들어온다.(null)
※ Member는 스프링 빈이 아니다!!!!!!!!
// 출력결과
nobean2 = null
nobean3 = Optional.empty
'Spring' 카테고리의 다른 글
#7-3. [스프링 핵심 원리-기본편] - 생성자 주입 (0) | 2022.07.28 |
---|---|
#7-1. [스프링 핵심 원리-기본편] - 의존관계 주입 방법 (0) | 2022.07.27 |
#6. [스프링 핵심 원리-기본편] - 컴포넌트 스캔 (0) | 2022.07.26 |
#5-2. [스프링 핵심 원리-기본편] - @Configuration과 싱글턴 (0) | 2022.07.21 |
#5-1. [스프링 핵심 원리-기본편] - 싱글턴 패턴 (0) | 2022.07.21 |