Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- 정리
- oracle
- SQL
- MySQL
- node.js
- 스프링부트
- 코드테스트
- 미니정리
- java
- 자바스크립트
- 프론트엔드
- 백엔드
- jsp
- 프런트엔드
- BACK-END
- Next.js
- 데이터베이스
- spring
- 스프링
- 오라클
- JavaScript
- 자바
- jpa
- 쿼리
- web
- 코드 테스트
- 알고리즘
- 서버
- 프로그래머스
- 디자인 패턴
Archives
- Today
- Total
참치코더의 꿈 메모장
Spring / DI 옵션 처리, 생성자 주입 선택해야 하는 이유 정리 본문
728x90
옵션 처리
- 주입할 스프링 빈이 없어도 동작해야 할 때가 있다.
- @Autowired(required) 옵션의 기본값이 true로 되어 있어서 자동 주입 대상이 없으면 오류가 발생한다.
자동 주입 대상을 옵션으로 처리하는 방법 3가지

** @Nullable, Optional<>은 스프링 전반에 걸쳐서 지원된다. 생성자 자동 주입에서 특정 필드에서 검사할때 사용해도 된다.
생성자 주입을 꼭 사용해야 하는 이유
1. 불변
- 대부분의 의존관계 주입은 한번 일어나면 애플리케이션 종료시점까지 의존관계를 변경할 일이 없다.
- 수정자 주입을 사용하면, setX 메서드를 public으로 열어두어야 한다.
- 생성자 주입은 객체를 생성할 때 1번만 호출되므로 불변하게 설계할 수 있다.
2. 누락
- 생성자 주입을 사용하면 주입 데이터를 누락 했을 때 컴파일 오류가 발생한다.
- 테스트 할때 어떤 값을 필수로 입력해야 하는지 쉽게 코드를 까지 않고 알 수 있다.
3. final 사용
- 생성자 주입을 사용하면 필드에 final 키워드들 사용할 수 있다. 따라서 생성자에서 값이 설정되지 않는 오류를
컴파일 시점에서 막아준다.
- 수정자 주입을 포함한 나머지 주입 방식은 모두 생성자 호출 이후에 사용되므로, 필드에 final 키워드를 사용할 수 없다.
728x90
'Spring' 카테고리의 다른 글
| Spring / 애노테이션 만들기, 자동 or 수동 스프링 빈 등록 미니 요약 (1) | 2025.08.11 |
|---|---|
| Spring / 롬복과 @Autowired 필드 명, @Qualifier, @Primary (3) | 2025.08.08 |
| Spring / 다양한 DI(의존 관계 주입) 방법 (1) | 2025.08.05 |
| Spring / 컴포넌트 스캔 정리 및 중요한 점(스프링 프레임워크 관점) (3) | 2025.08.04 |
| spring / 컴포넌트 스캔과 의존관계 자동 주입 (1) | 2025.08.01 |
Comments