[Spring 스프링 기본] 의존관계 자동 주입

2023. 12. 26. 13:33·[ Development ]/[ Back-end ] Spring 기본

 

다양한 의존 관계 주입 방법 중 지금까지 생성자 주입 방식을 사용했으며

수정자 setter를 주입하는 방법,

필드에 바로 주입하는 방법,

일반 메서드를 통해 주입하는 방법,

자동 주입 대상을 옵션으로 처리하는 방법이 있다.

 

생성자 주입 방식을 선택하는 이유는

프레임 워크에 의존하지 않고 순수 자바 언어의 특징을 살리기 위함이다

생성자 주입을 사용하는 것이 기본적이며

필수 값이 아닌 경우에는 setter 주입 방식을 옵션으로 부여하는 방식을

사용할 수 있다. 

 

생성자 주입과 수정자 주입을 동시에 사용할 수 있으며

생성자 주입 방식을 추천하는 편이다.

 

Lombok 라이브러리를 제공하면 코드를 비교적 간단하게 정리할 수 있으며

final 키워드가 있는 필드들만 모아 생성자를 자동으로 만들어주는

@RequiredArgsConstructor 어노테이션을 사용할 수 있다.

생성자가 하나만 있는 경우에는 @Autowired 어노테이션을 생략할 수 있다.

 

@Autowired (required = false)

자동 주입 대상이 없을 때 수정자 메서드가 호출되지 않는다.

-> required 옵션 기본값은 원래 true

 

Optional<> 

자동 주입 대상이 없을 때 Optional.empty()가 입력된다. 

 

같은 타입의 빈이 2개 이상일 때

@Autowired 필드명 매칭 방법과 

@Qualifier 어노테이션 사용 방법으로 해결할 수 있다.

 

@Autowired는 타입 매칭을 시도했을 때 여러 개의 빈이 있다면

필드명과 파라미터명으로 빈 이름을 추가 매칭한다.

 

@Qualifier 어노테이션 사용하면 빈 이름이 변경되지는 않는다. 

 

 

 

 

728x90

'[ Development ] > [ Back-end ] Spring 기본' 카테고리의 다른 글

[Spring/Swagger] SpringBoot의 Spring Security 환경에서 Swagger 적용시 로그인 화면 임시 해결 방법  (1) 2024.02.15
[Spring/Swagger] 스프링부트에서 Swagger 사용하기 :: springdoc-openapi-ui 라이브러리  (0) 2024.02.15
[Spring 스프링 기본] 컴포넌트 스캔  (1) 2023.12.05
[Spring 스프링 기본] 싱글톤 컨테이너  (2) 2023.11.28
[Spring 스프링 기본] 스프링 컨테이너와 스프링 빈  (1) 2023.11.21
[Spring 스프링 기본] 객체 지향 원리 적용  (1) 2023.11.14
[Spring 스프링 기본] 2. 핵심 원리 이해 1 - 예제 만들기  (0) 2023.11.07
'[ Development ]/[ Back-end ] Spring 기본' 카테고리의 다른 글
  • [Spring/Swagger] SpringBoot의 Spring Security 환경에서 Swagger 적용시 로그인 화면 임시 해결 방법
  • [Spring/Swagger] 스프링부트에서 Swagger 사용하기 :: springdoc-openapi-ui 라이브러리
  • [Spring 스프링 기본] 컴포넌트 스캔
  • [Spring 스프링 기본] 싱글톤 컨테이너
dev charlotte
dev charlotte
주 - 컴퓨터공학 / 복수 - 산업 보안
    250x250
  • dev charlotte
    int main() {
    dev charlotte
  • 전체
    오늘
    어제
    • 분류 전체보기
      • [ Laboratory ]
        • Paper review
        • Advanced Operating System
        • System Software & Storage
        • Lab etc
      • [ Computer Science ]
        • Algorithm_C++
        • Operating System
        • Information Retrieval
        • Database_sql
        • SW Engineering
        • Computer Network
        • JavaScript
        • Python
        • Data Structure
        • CS study
        • Distributed systems
      • [ Computer Security ]
        • Convergence Security
        • Web Security
        • PIMS
        • Network Security
        • Digital Finance
      • [ Artificial Intelligence ]
        • Trend
        • Seminar
      • [ 미래, 같이, LG ]
      • [ Development ]
        • [ Front-end ]
        • [ Back-end ] Spring 기본
        • [ Back-end ] Node.js
      • etc
        • 현대오토에버 스마트 모빌리티 공학 체험 교육
      • It's me
  • 블로그 메뉴

    • 링크

      • GitHub
    • 공지사항

    • 인기 글

    • 태그

      자바스크립트
      프로그래머스 입문
      비전공자 코딩
      소프트웨어 공학
      현대오토에버
      싸피 13기
      백준
      ssafy 13기
      프로그래머스
      SSAFY
      티스토리챌린지
      프로그래머스 c++
      공대생 대외활동
      데이터베이스
      대학생 대외활동
      SQL 쿼리
      현대오토에버 스마트 모빌리티
      프로그래밍 언어론
      스마트모빌리티공학체험교육
      싸피
      코딩 인강
      SQL
      오블완
      코딩 교육
      코드잇
      현대오토에버 스마트모빌리티
      MySQL
      hotstorage
      spdk
      프로그래머스 코테
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.4
    dev charlotte
    [Spring 스프링 기본] 의존관계 자동 주입
    상단으로

    티스토리툴바