Agent Skills by ALSEL
Anthropic Claudeデザイン・クリエイティブ⭐ リポ 0品質スコア 50/100

spring-boot-dependency-injection

Spring Bootプロジェクトにおける依存性注入のパターンを提供し、コンストラクタ優先設計・オプショナルな協調オブジェクトの処理・Bean選択・配線の検証などをサポートします。サービスやコンフィギュレーションの作成時、フィールドインジェクションの置き換え、あいまいまたは不安定なSpring配線のトラブルシューティングの際に活用してください。

description の原文を見る

Provides dependency injection patterns for Spring Boot projects, including constructor-first design, optional collaborator handling, bean selection, and wiring validation. Use when creating services and configurations, replacing field injection, or troubleshooting ambiguous or fragile Spring wiring.

SKILL.md 本文

Spring Boot 依存性注入

概要

Spring Boot のコンストラクタファーストな依存性注入パターンを提供します:

  • コンストラクタインジェクションによる必須コラボレータ
  • ObjectProvider またはノーオップフォールバックによるオプショナルコラボレータ
  • @Primary@Qualifier によるビーン選択
  • フル統合テスト前の最小限のコンテキストテストによる検証

使用タイミング

以下の場合にこのスキルを使用してください:

  • 新しい @Service@Component@Repository、または @Configuration クラスを作成するとき
  • レガシー Spring コードのフィールドインジェクションを置き換えるとき
  • 同じ型の複数ビーンをクォリファイアプライマリビーンで解決するとき
  • null 駆動ワイヤリングなしでオプショナル機能、アダプタ、またはインテグレーションを処理するとき
  • 循環依存性または脆弱なコンテキスト起動失敗を確認するとき
  • コンストラクタベースのユニットテストに向けてコードを準備するとき

実装手順

1. 必須と選択的なコラボレータを分離する

各クラスについて以下を特定します:

  • 正しい動作に必要な必須コラボレータ
  • インテグレーション、キャッシング、通知、またはフィーチャーフラグされた動作を有効にするオプショナルコラボレータ

必須コラボレータはコンストラクタに属します。オプショナルなものは ObjectProvider、条件付きビーン、またはノーオップ実装などの明示的な戦略が必要です。

2. デフォルトはコンストラクタインジェクション

アプリケーションサービスとアダプタについて:

  • 必須依存関係をコンストラクタを通じてインジェクトする
  • インジェクトされたフィールドは final に保つ
  • ユニットテストで Spring を起動せずにクラスを直接インスタンス化する

通常、単一コンストラクタで十分です。その場合、@Autowired は不要です。

3. オプショナル動作を意図的に解決する

よい選択肢は以下を含みます:

  • ObjectProvider<T> はレイジーアクセスが有用な場合
  • @ConditionalOnProperty または @ConditionalOnMissingBean はワイヤリングが設定で変わるべき場合
  • ノーオップ実装は呼び出し元が機能が有効かどうか気にすべきでない場合

ランタイム動作を曖昧にしておく nullable コラボレータは避けてください。

4. ビーン選択アノテーションは必要な場合のみ使用する

複数ビーンが同じ型を共有する場合:

  • デフォルト実装には @Primary を使用
  • 名前付きバリアントには @Qualifier を使用
  • クォリファイア名は安定し、grep で容易に検索可能に保つ

選択ルールが複雑になった場合、サービス全体に分散させる代わりに、専用の設定クラスに移動してください。

5. ワイヤリングはビジネスコードではなく設定に保つ

以下の場合に @Configuration@Bean メソッドを使用します:

  • オブジェクトがサードパーティライブラリから来る場合
  • 条件付き作成ロジックが必要な場合
  • 環境固有のワイヤリングまたは明示的な構成が必要な場合

ビジネスサービスは、インフラストラクチャコラボレータがどのようにインスタンス化されるかを知るべきではありません。

6. ワイヤリングを明示的に検証する

新しいサービスまたは設定を記述した後:

  1. 最小限のコンテキストテストでビーンがロードされることを確認
    @SpringBootTest
    @ContextConfiguration(classes = UserService.class)
    class UserServiceWiringTest {
        @Autowired UserService userService;
        @Test void serviceIsInstantiated() { assertNotNull(userService); }
    }
    
  2. サービス動作のコンストラクタベースユニットテストを実行 (Spring は不要)。
  3. MVC、JPA、またはメッセージング統合を検証する必要があるときのみスライステストを追加
  4. @SpringBootTest はコンテナ全体のワイヤリング検証用に予約

ステップ 1 での失敗はビジネスロジックが追加される前にワイヤリング問題を示します。

例 1:コンストラクタファーストのアプリケーションサービス

@Service
public class UserService {

    private final UserRepository userRepository;
    private final EmailSender emailSender;

    public UserService(UserRepository userRepository, EmailSender emailSender) {
        this.userRepository = userRepository;
        this.emailSender = emailSender;
    }

    public User register(UserRegistrationRequest request) {
        User user = userRepository.save(User.from(request));
        emailSender.sendWelcome(user);
        return user;
    }
}

このクラスはユニットテストでモックを使用して直接インスタンス化するのが簡単です。

例 2:ノーオップフォールバック付きのオプショナル依存関係

@Service
public class ReportService {

    private final ReportRepository reportRepository;
    private final NotificationGateway notificationGateway;

    public ReportService(
        ReportRepository reportRepository,
        ObjectProvider<NotificationGateway> notificationGatewayProvider
    ) {
        this.reportRepository = reportRepository;
        this.notificationGateway = notificationGatewayProvider.getIfAvailable(NotificationGateway::noOp);
    }
}

これはクラスの残りの部分に null 処理を漏らさずにオプショナル動作を明示的に保ちます。

例 3:明確な選択で複数ビーン

@Configuration
public class PaymentConfiguration {

    @Bean
    @Primary
    PaymentGateway stripeGateway() {
        return new StripePaymentGateway();
    }

    @Bean
    @Qualifier("fallbackGateway")
    PaymentGateway mockGateway() {
        return new MockPaymentGateway();
    }
}

デフォルトパスには @Primary を使用し、特定のバリアントが必要な場合のみ @Qualifier を使用してください。

ベストプラクティス

  • 必須依存関係にはコンストラクタインジェクションを推奨します。
  • サービスコンストラクタは小さく保ちます。クラスが多くのコラボレータを必要とする場合、設計は別の抽象化を求めています。
  • nullable なオプショナル依存関係の代わりにノーオップまたは条件付きビーンを使用してください。
  • フレームワーク固有の作成ロジックは設定クラスに保ちます。
  • まず Spring なしでサービスをテストし、その後、値を追加する場所にのみコンテナテストを追加してください。
  • リファクタ中にフィールドインジェクションを削除する代わりに拡張します。

制約と警告

  • フィールドインジェクションは依存関係を隠し、テストを書きにくくします。
  • 循環依存性は通常、設計上の問題であり、@Lazy で解決するワイヤリングトリックではありません。
  • クォリファイアを過度に使用するとコードベースが推論しにくくなります。より良い抽象化またはより明確な設定を推奨します。
  • オプショナルコラボレータも不在時に決定論的な動作が必要です。
  • フルコンテキストテストは、早期に使用した場合、ワイヤリング失敗の実際の原因を隠す可能性があります。

参考資料

  • references/reference.md
  • references/examples.md
  • references/spring-official-dependency-injection.md

関連スキル

  • spring-boot-crud-patterns
  • spring-boot-rest-api-standards
  • unit-test-service-layer

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
giuseppe-trisciuoglio
リポジトリ
giuseppe-trisciuoglio/developer-kit
ライセンス
MIT
最終更新
不明

Source: https://github.com/giuseppe-trisciuoglio/developer-kit / ライセンス: MIT

関連スキル

汎用デザイン・クリエイティブ⭐ リポ 1,739

nano-banana-2

inference.sh CLIを通じてGoogle Gemini 3.1 Flash Image Preview(Nano Banana 2)で画像を生成します。テキストから画像を生成する機能、画像編集、最大14枚の複数画像入力、Google Searchグラウンディング機能に対応しています。トリガーワード:「nano banana 2」「nanobanana 2」「gemini 3.1 flash image」「gemini 3 1 flash image preview」「google image generation」

by openakita
汎用デザイン・クリエイティブ⭐ リポ 815

octocode-slides

洗練されたマルチファイル形式のHTMLプレゼンテーションを生成します。6段階のフロー(概要 → リサーチ → アウトライン → デザイン → 実装 → レビュー)で構成されています。各スライドは独立したHTMLファイルとなり、iframeで読み込まれます。「スライドを作成してほしい」「プレゼンテーションを作ってほしい」「HTMLスライドを生成してほしい」「デックを構築してほしい」といった依頼や、ノート・ドキュメント・コードを洗練されたプレゼンテーションに変換する際に使用できます。

by bgauryy
汎用デザイン・クリエイティブ⭐ リポ 482

gpt-image2-ppt

OpenAIのgpt-image-2を使用して、視覚的に優れたPPTスライドを生成します。Spatial Glass、Tech Blue、Editorial Monoなど10種類のキュレーション済みスタイルに対応し、ユーザーが提供したPPTXファイルを模倣するテンプレートクローンモードも搭載しています。HTMLビューアと16:9形式のPPTXファイルを出力します。プレゼンテーション、スライド、ピッチデック、投資家向けPPT、雑誌風PPTの作成依頼などで活用してください。

by JuneYaooo
Anthropic Claudeデザイン・クリエイティブ⭐ リポ 299

nano-banana

Nano Banana PRO(Gemini 3 Pro Image)およびNano Banana(Gemini 2.5 Flash Image)を使用したAI画像生成機能です。以下の場合に活用できます:(1)テキストプロンプトからの画像生成、(2)既存画像の編集、(3)インフォグラフィックス、ロゴ、商品写真、ステッカーなどのプロフェッショナルなビジュアルアセット制作、(4)複数画像での人物キャラクターの一貫性保持、(5)正確なテキスト描画を含む画像生成、(6)AI生成ビジュアルが必要なあらゆるタスク。「画像を生成」「画像を作成」「写真を作る」「ロゴをデザイン」「インフォグラフィックスを作成」「AI画像」「nano banana」またはその他の画像生成リクエストをトリガーとして機能します。

by majiayu000
Anthropic Claudeデザイン・クリエイティブ⭐ リポ 299

oiloil-ui-ux-guide

モダンでクリーンなUI/UXガイダンス・レビュースキルです。新機能や既存システム(Webアプリ)に対して、実行可能なUI/UX改善提案、デザイン原則、デザインレビューチェックリストが必要な場合に活用できます。CRAP(コントラスト・反復・配置・近接)をベースに、タスクファーストなUX、情報設計、フィードバック・システムステータス、一貫性、affordances、エラー防止・復旧、認知負荷を重視します。モダンミニマルスタイル(クリーン・余白・タイポグラフィ主導)を強制し、不要なテキストを削減、アイコンとしての絵文字を禁止し、統一されたアイコンセットから直感的で洗練されたアイコンを推奨します。

by majiayu000
Anthropic Claudeデザイン・クリエイティブ⭐ リポ 299

axiom-hig-ref

Apple Human Interface Guidelines リファレンス — 色(セマンティックカラー、カスタムカラー、パターン)、背景(マテリアル階層、ダイナミック背景)、タイポグラフィ(標準スタイル、カスタムフォント、Dynamic Type)、SF Symbols(レンダリングモード、色、多言語対応)、ダークモード、アクセシビリティ、プラットフォーム固有の考慮事項を網羅したガイドラインです。

by majiayu000
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: giuseppe-trisciuoglio · giuseppe-trisciuoglio/developer-kit · ライセンス: MIT