JAVA

Spring 의존성 주입 방법

D_Helloper 2023. 6. 16. 11:15
  • DI, IoC
    • IoC
      • 제어의 역전(개발자 → 컴퓨터)
      • 프레임워크 정의 : 프로그램 실행 제어권이 개발자에게 있냐, 컴퓨터에게 있냐.
      • 컴퓨터에게 있으니까 스프링은 IoC
    • DI
      • Dependency Injection
      • 의존성 주입
      • new 를 스프링이 해준다.
  • 스프링에서는 3가지 의존성 주입 방식을 지원함
    1. Field 주입
    2. Setter 주입
    3. Constructor 주입
  1. Field 주입
    • Field 주입은 클래스의 Field 에 Autowired 어노테이션을 붙여서 주입하는 방식을 말함
@Controller
public class LogController
{
		@Autowired
    private LogService logService;
		@Autowired
    private RestTemplateUtils restTemplateUtils;
		
		// ...
}
  1. Setter 주입
    • Setter 주입은 클래스의 Setter 함수에 Autowired 어노테이션을 붙여서 주입하는 방식을 말함
@Controller
public class LogController
{
    private LogService logService;
    private RestTemplateUtils restTemplateUtils;
		
		@Autowired
		public void setLogService(LogService logService)
		{
				this.logService = logService;
		}

		@Autowired
		public void setRestTemplateUtils(RestTemplateUtils restTemplateUtils)
		{
				this.restTemplateUtils = restTemplateUtils;
		}

		// ...
}
  1. 생성자 주입
    • 생성자를 통해 주입받는 방식
@Controller
public class LogController
{
    private final LogService logService;
    private final RestTemplateUtils restTemplateUtils;

    public LogController(**LogService logService**, **RestTemplateUtils restTemplateUtils**)
    {
        this.logService = logService;
        this.restTemplateUtils = restTemplateUtils;
    }

		// ...
}