[flutter] 플러터에서 Injectable을 사용한 의존성 주입 개발 방법론

의존성 주입(Dependency Injection)은 앱 개발에서 중요한 개념 중 하나입니다. 이를 통해 코드의 재사용성, 유지보수성, 테스트 용이성 등을 향상시킬 수 있습니다. 플러터(Flutter)에서는 이를 구현하기 위해 Injectable이라는 라이브러리를 사용할 수 있습니다.

Injectable이란?

Injectable은 플러터에서의 의존성 주입을 쉽게 구현할 수 있도록 도와주는 라이브러리입니다. 이 라이브러리를 사용하면 의존성을 주입하는 과정을 간단하게 처리할 수 있어 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.

사용 방법

Injectable을 사용하기 위해서는 다음과 같은 단계를 따라야 합니다.

1. 의존성 주입을 적용하고자 하는 클래스에 @injectable 어노테이션 추가하기

@Injectabe 어노테이션을 클래스에 추가하여 해당 클래스가 의존성 주입이 가능한 클래스임을 명시해야 합니다.

@Injectable()
class ExampleService {
  // ...
}

2. 주입할 의존성을 정의하는 클래스 작성하기

@Injectabe 어노테이션을 사용하여 의존성을 주입할 대상 클래스에 의존성을 정의하는 클래스를 작성해야 합니다.

@Injectable()
class ExampleRepository {
  // ...
}

3. 의존성 주입을 받을 클래스에서 필요한 의존성 변수 선언하기

class ExampleBloc {
  final ExampleRepository _repository;

  ExampleBloc(this._repository);
  
  // ...
}

4. 의존성 주입

의존성을 주입하려면 @Injectable 을 사용하여 주입할 클래스를 주석 처리해야 합니다.

@module
abstract class InjectableModules {
  @lazySingleton
  ExampleRepository get exampleRepository;
  
  // ...
}

위의 예에서 ExampleRepository는 ExampleService와 ExampleDao 등에 의존성을 가지고 있으므로 이러한 클래스들도 의존성 주입을 받을 때 @Injectable 어노테이션을 사용하여 주입해주어야 합니다.

5. 의존성 주입 모듈 등록하기

앱의 entry point에 의존성 주입 모듈을 등록해야 합니다.

void main() {
  configureDependencies();
  runApp(MyApp());
}

위의 예에서 configureDependencies() 함수는 의존성 주입을 설정하는 함수로, Injectable.autoInjectable() 메소드를 호출하여 의존성 주입을 자동으로 처리할 수 있도록 합니다.

결론

플러터에서 Injectable을 사용하면 의존성 주입 개발 방법론을 쉽게 구현할 수 있습니다. 의존성을 주입하는 과정을 단순화하여 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.