IoC가 개발자 대신 객체를 주입해주는 것의 편리함

 

1. 스프링을 사용할 경우

@SpringBootApplication
public class MainApp {
    public static void main(String[] args) {
        SpringApplication.run(MainApp.class, args);
    }
}
@RestController
public class SignUpController {
    private final UserRepositoryService userRepositoryService;

    @Autowired
    public SignUpController(UserRepositoryService userRepositoryService) {
        this.userRepositoryService = userRepositoryService;
    }
    
}

 

2. 스프링을 사용하지 않을 경우

public class App {
    public static void main(String[] args) {
        UserRepository userRepository = new UserRepositoryImpl();  // 개발자가 직접 객체 생성
        UserRepositoryService userRepositoryService = new UserRepositoryServiceImpl(userRepository);  // 개발자가 직접 의존성 주입
        SignUpController signUpController = new SignUpController(userRepositoryService);  // 개발자가 직접 의존성 주입
        
    }
}

 

 

이처럼 스프링 컨테이너가 알아서 의존성을 관리하고 주입해주기 때문에, 개발자는 이에 신경쓸 필요가 없어서

비즈니스 로직에만 집중할 수 있다.