본문 바로가기

JAVA

[SPRING] 의존성 주입 DI(Dependency Injection)

DI 종류

  • 필드 주입
  • setter 주입
  • 생성자 주입

의존관계가 실행중에 변경될 일이 없으므로 생성자 주입을 권장합니다.

실무에서는 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용합니다.

그리고 정형화 되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록합니다.

 

의존관계 설정 (컨포넌트 스캔)

스프링 컨테이너에 스프링 빈으로 등록합니다. 

기본으로 싱글톤으로 등록이 되며, 설정으로 싱글톤으로 아니게 설정 가능하지만 왠만하면 싱글톤으로 사용합니다.

 

애노테이션으로 등록

@Component, @Controller, @Service @Repository

1. 생성자 주입

@Controller
public class MemberController {

    private final MemberService memberService;

    @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }
}

2. 필드 주입

@Controller
public class MemberController {

    @Autowired private MemberService memberService;

}

3.setter 주입

@Controller
public class MemberController {

    private MemberService memberService;

    @Autowired
    public void setMemberService(MemberService memberService) {
        this.memberService = memberService;
    }
}

public 으로 노출되어있음

'JAVA' 카테고리의 다른 글

[SPRING] 객체지향 특징  (0) 2023.06.14
[SPRING] 스프링 프레임워크의 모든 것  (0) 2023.06.14
[JAVA] JAVA 문법  (0) 2023.06.02
[JAVA]자바 특징  (0) 2023.06.02
[JAVA]java 버전 업그레이드 변경  (0) 2023.06.02