spring_core_dart
Spring for Dart の中核となるパッケージです。クラスをアノテーションで Bean
として宣言すると、コンテナがそれらを生成し、互いに結び付け、設定します。結び付けのコードはビルド時に
spring_core_dart_generator が書き出すため、実行時にリフレクションで検索することはありません。
dependencies:
spring_core_dart: ^0.7.1
dev_dependencies:
build_runner: ^2.17.0
spring_core_dart_generator: ^0.7.1
import 'package:spring_core_dart/spring_core_dart.dart';
import 'main.spring.dart';
@Service()
class Greeter {
Greeter(@Value(r'${greeting:Hello}') this.greeting);
final String greeting;
}
@ComponentScan()
final BeanModule appBeans = $appBeans;
const log = SpringLog('app');
void main() {
final context = ApplicationContext.run([appBeans]);
log.info(context.getBean<Greeter>().greeting);
context.close();
}
main.spring.dart を書き出すには、最初に一度、そしてアノテーションを変更するたびに
dart run build_runner build を実行します。
内容
- コンテナと Bean: Bean を宣言し、注入し、ライフサイクルを管理するアノテーションと、それらを動かすコンテキスト。
- 設定: プロパティ、YAML、環境変数、コマンドラインからの値。プロファイル。型付きの設定。
- イベント: イベントを発行し、同期的または非同期に受け取る Bean。
- メッセージ: 引数付きの多言語テキスト。
- リソース: ファイル、アセット、URL をひとつのインターフェースで扱います。パスパターン。
- 型変換: 文字列から数値、期間、サイズ、独自の型への変換。
- ロギング:
SpringLog、ログレベル、行の書式。 - 式 (SpEL): アノテーションとコードの中の
#{...}式。 - JSON: アノテーションによるオブジェクトと JSON の相互変換。
- バリデーション: フィールドと引数の制約、そしてバリデーター。
- アスペクト (AOP): Bean のメソッドの前後で実行されるコード。
ライブラリ
package:spring_core_dart/spring_core_dart.dart はすべてをエクスポートします。一部だけが必要なライブラリは、
core.dart、beans.dart、context.dart、expression.dart、json.dart、validation.dart、aop.dart
を個別にインポートできます。Jakarta の名前 (@Inject、@Named) は jakarta.dart にあります。