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 | 31 |
Tags
- Exception
- java
- SpringBoot
- kotlin
- Android
- Spring Boot
- 알고리즘
- 자바
- Greedy
- springdatajpa
- 인프런
- 그리디
- Proxy
- pointcut
- 스프링 핵심 원리
- 스프링 핵심 기능
- db
- transaction
- JPQL
- jpa
- 김영한
- 백준
- Thymeleaf
- AOP
- 스프링
- spring
- http
- QueryDSL
- Servlet
- JDBC
Archives
- Today
- Total
개발자되기 프로젝트
@Autowired 옵션처리 본문
1. 주입할 스프링 빈이 없어도 동작해야 할 경우도 있다.
- 주입할 스프링 빈이 없어도 동작해야 할 경우도 있다.
- @Autowired(required = false)로 지정하는 경우, 자동 주입할 대상이 없으면 수정자 메서드 호출 안됨.
- @Nullable : 자동 주입할 대상이 없으면 null 입력됨.
- Optional<> : 자동 주입할 대상이 없으면 Optional.empty가 입력됨.
public class AutowiredTest {
@Test
void AutowiredOption(){
ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class);
}
static class TestBean{
@Autowired(required = false)
public void setNoBean1(Member noBean1){
//member는 스프링 빈 아님.
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);
}
}
}
- @Autowired를 하면 스프링 빈을 가지고 의존성을 주입한다.
- 하지만, Member의 경우 스프링 빈이 아니다.
- 따라서 setNoBean1 메서드는 @Autowired를 해도 의존성을 주입 받을 수 없다.
- 이 때 requited = false이므로, 의존성 주입이 안되니 메서드가 동작하지 않는다.
- noBean2, 3의 경우 마찬가지로 의존성이 주입되지 않는 조건이고,
- 옵션에 따라 처리가 된 것이다.
noBean3 = Optional.empty
noBean2 = null
2.참고
- @Nullable, Optional은 스프링 전반에 걸쳐서 지원됨.
- 생성자 자동주입에서 특정 필드에만 걸 수도 있음.
3. GitHub : 210729 @Autowired option
'인프런 > [인프런] Spring 핵심원리 이해' 카테고리의 다른 글
의존관계 주입, lombok (0) | 2021.07.29 |
---|---|
생성자 주입을 선택해! (0) | 2021.07.29 |
의존관계 주입 방법 (0) | 2021.07.29 |
컴포넌트 스캔, 중복 등록, 충돌 (0) | 2021.07.28 |
컴포넌트 스캔, 필터 (0) | 2021.07.28 |
Comments