의존관계 주입 방법

Lee·2023년 8월 17일
0

필드 주입

@Service
public class UserService{

	@Autowired
    private UserRepository userRepository;
}

특징

  • 가장 편리하게 의존성 주입이 가능
  • 프레임워크 의존적

setter 주입

@Service
public class UserService{
	
    private UserRepository userRepository;
    
	@Autowired
    public void setUserRepository(UserRepository userRepository) {
    	this.userRepository = userRepository;
    }
}

특징

  • 객체는 null이 가능하기 때문에 setter 주입의 경우에는 null 검증로직이 필요
  • 일반적으로 DI는 어플리케이션 종료 시점까지 변경할 일이 없는데 java bean 규약에서 setter는 public이므로 언제든 변경이 가능하다.

생성자 주입

@Service
public class UserService{
	
    private final UserRepository userRepository;
    
	@Autowired
    public UserService(UserRepository userRepository){
    	this.userRepository = userRepository;
    }
}

특징

  • 스프링 프레임워크에서 권장하는 방식
  • 순환 참조가 발생할 경우 컴파일 단계에서 미리 알 수 있다.
  • final 사용으로 인해 필드의 불변성을 보장할 수 있다.
profile
발전하고 싶은 백엔드 개발자

0개의 댓글