
# Resources

リソースとは、アプリケーションが読み込むコンテンツのことです。置き場所に関係なく、`resources:mail.txt` のようなロケーション文字列で指定します。

## 使う理由

テンプレート、データファイル、設定ファイルを読むコードは、ファイルの場所を気にするべきではありません。リソースを使うと、場所はロケーション文字列が決めます。`resources:`(`lib/resources/` のファイル)、`file:`、`http:` / `https:`、`package:`、または独自のプレフィックスです。コードは読むだけです。

`lib/resources/` は Java のクラスパスに相当します。ジェネレーターがそのファイルを埋め込むため、`resources:...` は `dart run`、AOT 実行ファイル、Flutter、Web のいずれでも、アセット宣言なしで動きます。

設定値を読むだけならリソースは不要です。[@Value](../config/value.md) か [Environment](../config/environment.md) を使ってください。

## 例

```dart
import 'package:spring_core_dart/spring_core_dart.dart';

@Service()
class WelcomeLetter {
  // コンテキストのリソースローダーで解決されるため、
  // 独自プロトコルやアセットローダーも適用される。
  WelcomeLetter(@Value('resources:templates/welcome.txt') this.template);

  final Resource template;

  Future<String> text() => template.readAsString();
}
```

## ページ一覧

- [Resource と ResourceLoader](resource.md): `Resource` インターフェース、ロケーションのプレフィックス、`ResourceLoader`、`ProtocolResolver`、リソースパターン。
- [AntPathMatcher](path-matcher.md): リソースパターンと `@PropertySource` が使う Ant 形式のパターン(`?`、`*`、`**`、`{name}`)。

## 関連項目

- [@PropertySource](../config/property-source.md)
- [Messages](../messages/index.md)
- [Beans](../beans/index.md)
