単純なJavaクラスを介した依存性注入の原理の小さな例を見せてください.春まで見てきましたが、単純なJavaクラス用語で説明する必要がある場合は、簡単な例を見せてください. .
2 に答える
この記事には、アノテーションを使用した非常に優れた基本的な Java の例があります。
http://simplespringtutorial.com/annotations.html
DI の基本は、ここでは簡単な Java の例で非常に明確にカバーされています。
依存性注入を使用する場合、実行中に自分でオブジェクトを作成するのではなく、コンテナーに依存してオブジェクトの依存性を注入します。例えば:
依存性注入を使用しない場合、次のように記述する必要があります。
public class ATMTransferService {
private AccountDAO accountDAO;
public void transfer(Account from, Account to){
AccountDAO accountDAO = new AccountDAO();
...Code that transfers money from one account to another and saves it...
accountDAO.store();
}
自分で accountDAO をインスタンス化する必要があり、依存関係を取得する責任は自分で処理したことに注意してください。
スプリングまたは DI を可能にする他のフレームワークを使用して、次のように記述して、その責任をコンテナーに移します。
<bean id="ATMTransfer" class="com.example.ATMTransferService" >
<property name="accountDAO" ref="AccDAO" />
</bean>
<bean id="AccDAO" class="com.model.AccountDAO">
<property name="sessionFactory" ref="sessFac"
</bean>
<bean id="sessFac" class="..."
//Dependencies required for the cration fo session factory.
</bean>
今、私のクラスは次のようになります: public class ATMTransferService { private AccountDAO accountDAO;
public void transfer(Account from, Account to){
...Code that transfers money from one account to another and saves it...
accountDAO.store();
}
この場合、AccountDAO クラスを省略しましたが、SessionFactory に依存します。xml 構成で指定することにより、既定のコンストラクターを使用する代わりに、事前定義されたコンストラクターを使用することもできます。
単純化しすぎていないことを願っています。依存性注入の利点がこれよりも大きくなったら、最初に xml 構成を変更するだけで実装クラスを交換できます。また、ビジネス クラスから依存関係作成コードを削除すると、よりクリーンなコードが得られます。インターフェイス指向のプログラミングを促進するのは本当に素晴らしい方法です。