의존성 관리는 모바일 앱 개발에서 매우 중요한 부분입니다. 플러터에서는 다양한 방법으로 의존성을 관리할 수 있지만, 이번에는 Inject와 Injectable을 사용한 의존성 관리 방법에 대해 알아보겠습니다.
1. Inject와 Injectable 라이브러리 소개
- Inject: 플러터에서 제공하는 의존성 주입(Dependency Injection) 라이브러리입니다. 클래스나 메소드에 애노테이션을 추가하여 의존성을 주입할 수 있습니다.
- Injectable: Inject에 의존성 주입을 적용하기 쉽게 해주는 추가적인 라이브러리입니다. 코드를 더 간결하고 가독성이 좋게 작성할 수 있도록 도와줍니다.
2. Inject와 Injectable 사용하기
2.1. 의존성 주입 설정하기
먼저, 의존성 주입을 사용하기 위해 injectable 패키지를 pubspec.yaml
파일에 추가해야 합니다. 하지만 Inject는 Dart의 코드 생성 기능을 이용하기 때문에, 추가적으로 build_runner와 inject_generator 패키지도 설치해야 합니다.
dependencies:
injectable:
flutter:
sdk: flutter
dev_dependencies:
build_runner:
inject_generator:
2.2. 모듈 생성과 의존성 등록하기
모듈은 의존성을 관리하기 위한 단위로 사용됩니다. 다음은 예시로써 data_module.dart
파일을 생성하고 모듈을 구성하는 방법을 보여줍니다.
import 'package:injectable/injectable.dart';
@module
abstract class DataModule {
@singleton
MyRepository get myRepository => MyRepository();
// 다른 의존성 등록
}
위의 코드에서 @module
은 해당 클래스가 모듈임을 알리는 애노테이션입니다. @singleton
은 해당 의존성이 싱글톤으로 관리됨을 의미합니다.
2.3. 의존성 주입하기
이제 의존성을 주입받고 싶은 클래스에서 @injectable
애노테이션을 추가합니다. 다음은 예시로써 my_service.dart
파일을 보여줍니다.
import 'package:injectable/injectable.dart';
@injectable
class MyService {
final MyRepository _myRepository;
MyService(this._myRepository);
// 기능 구현
}
위의 코드에서 @injectable
애노테이션은 의존성을 주입받을 수 있는 클래스임을 나타냅니다. 생성자에서 필요한 인자를 선언하여 의존성을 주입받을 수 있습니다.
2.4. 의존성 주입 사용하기
이제 의존성 주입이 완료되었으므로 해당 클래스에서 의존성을 사용할 수 있습니다. 예를 들어, main.dart
파일에서 MyService
클래스를 사용하는 방법은 다음과 같습니다.
void main() {
configureDependencies(); // 의존성 주입 설정
final MyService myService = getIt<MyService>();
myService.doSomething(); // 의존성 사용
runApp(MyApp());
}
위의 코드에서 configureDependencies()
는 의존성 주입 설정을 초기화하는 역할을 합니다. getIt
은 의존성 주입 컨테이너로 등록된 객체를 가져올 수 있는 메소드입니다.
3. 마무리
이와 같이 Inject
와 Injectable
을 사용하면 플러터에서 모듈간 의존성을 효과적으로 관리할 수 있습니다. 간편한 설정과 사용법을 통해 코드의 재사용성과 유지보수성을 높일 수 있습니다.
더 자세한 내용과 사용 예시는 아래의 참고 자료를 확인해주세요.