私は、数百の数の Bean を持つ Spring アプリケーションに取り組んでおり、使用と文書化が非常に面倒になっています。
保守性、ドキュメンテーション、および一般的な使用法に役立つ多数の Bean を使用した DI 対応アプリの経験に興味があります。
このアプリケーションは Spring ベースで、いくつかのコンテキスト ファイルがありますが、DI コンテナーや DI 全般に関する提案については、喜んで耳を傾けます。
私は、数百の数の Bean を持つ Spring アプリケーションに取り組んでおり、使用と文書化が非常に面倒になっています。
保守性、ドキュメンテーション、および一般的な使用法に役立つ多数の Bean を使用した DI 対応アプリの経験に興味があります。
このアプリケーションは Spring ベースで、いくつかのコンテキスト ファイルがありますが、DI コンテナーや DI 全般に関する提案については、喜んで耳を傾けます。
コンポーネント スキャンと自動配線機能を使用して、Spring XML 構成の量を劇的に減らすことができます。
例:
<beans>
<!-- Scans service package looking for @Service annotated beans -->
<context:component-scan base-package="my.root.package.service"/>
</beans>
自動的にスキャンするには、サービス クラスに注釈を付ける必要があります。
package my.root.package.service;
@Service("fooService")
public class FooServiceImpl implements FooService{
}
@Autowired アノテーションを使用して、Spring に Bean 依存関係を注入する方法を伝えることもできます。
package my.root.package.service;
@Service("barService")
public class BarServiceImpl implements BarService{
//Foo service injected by Spring
@Autowired
private FooService fooService;
//...
}
私は以下が有用であることがわかりました:
以前は、数百 (数千?) の Bean を含む巨大な Spring インストールで作業していました。構成を分割することで、生活がより管理しやすくなり、テストやスタンドアロンプロセスの作成などが簡素化されました。しかし、Intellij に付属する Intellij Spring 統合が最も大きな違いを生んだと思います。Spring 対応の IDE を使用すると、時間を大幅に節約できます。
@Wilson Freitasが言うように、自動配線を使用してください。私は毎日、ほとんど自動配線を使用して、数千のスプリングマネージド Bean を持つシステムで作業しています。しかし、「全体像を維持する」という概念は少し間違っていると思います。システムが成長するにつれて、小規模なシステムで行ったのと同じ方法でそれを行うことは期待できません。@Autowiring を使用すると、xml ベースのスプリングよりも強力な型付けを使用する必要があります。これは、IDE の依存関係追跡機能を使用して依存関係をナビゲートできることを意味します。
スプリング構成に関しては、「全体像」を理解しすぎる必要があると考えるのは最適ではないと本当に思います。コードとその依存関係に集中する必要があります。管理性と保守性は、このコードを適切に整理し、適切に名前を付け、結合を管理することによって実現されます。春を使用していない場合でも適用されるすべてのもの。Spring はあまり変更されるべきではなく、JSR-330 の承認により、依存性注入がランタイム環境の「フードの下」にさらに忍び寄るように見えるかもしれません。
私たちの戦略は次のとおりです。