2016-09-12 9 views
0

私は春に新しく、新しい演算子でクラスをインスタンス化する時期と春のコンテナを使用する時期を理解できません。 例私は、JDBCテンプレートを使用していたコードIOCコンテナ注入の理解

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
public class Test { 

public static void main(String[] args) { 
    ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); 

    EmployeeDao dao=(EmployeeDao)ctx.getBean("edao"); 
    int status=dao.saveEmployee(new Employee(102,"Amit",35000)); 
    System.out.println(status); 

    int status=dao.updateEmployee(new Employee(102,"Sonoo",15000)); 
    System.out.println(status); 


    Employee e=new Employee(); 
    e.setId(102); 
    int status=dao.deleteEmployee(e); 
    System.out.println(status); 

} 

} 

を見つけました。私は社員クラスを導入するのがなぜ新しいのか疑問に思っています。代わりに(Employee)ctx.getBean( "employee")を使用していたはずです。新しい演算子を使用すると依存関係が作成されますか? Plsは私達が春、 を使用して、一貫春によって管理されていないオブジェクトのみを構築しているアプリケーションの

は、」ドメインオブジェクトです。(春 で、それが可能だとしても、ProSpring帳から

+0

ドメインクラスはnew演算子でインスタンス化する必要があります。また、Beanとして定義されたオブジェクトをSpringに作成させることができます。 '(Employee)ctx.getBean(" employee ")'は、 'applicationContext.xml'にBeanが定義されている場合にのみ実行できます。 –

答えて

0

を助けるにはSpringが@Componentアノテーションをクラス に適用し、プロトタイプスコープを割り当てて、ドメインオブジェクトを管理するようにしてください。ほとんどの場合、アプリケーション内でドメインオブジェクト を管理することを選択します)。 ドメインオブジェクトに関与する必要はありません。通常、doメインオブジェクトをnew()演算子 を使用して処理し、サービスまたはデータアクセスレイヤーで処理を実行します。 Springでは、(Beanスコープ プロトタイプを使用して)リクエストされるたびにドメインオブジェクトの新しいインスタンスを挿入することもサポートしていますが、一般的に開発者はこのアプローチを採用しません。一般的にDOM の外ではほとんど依存関係がなく、多くの設定を必要としません。 "

したがって、Employee型のBeanを作成できますが、デフォルトのすべてのBeanとして定義する必要があります多くの従業員とそのオブジェクトが存在する可能性があるため、Employeeをシングルトンとして使用することはできませんが、春の機能の利用に関する集中度は、ドメインob jects。

+0

ありがとうalot @ user3138997 –

0

Spring IOCコンテナは、Spring Frameworkのコアです。コンテナは、オブジェクトを作成し、それらを結びつけ、構成し、作成から破棄までの完全なライフサイクルを管理します.IoCコンテナは、XMLまたはJavaアノテーション、またはJavaコードから情報/メタデータを取得します。

あなたの春のコンテキストxmlファイルのEmployee Beanを作成し、確認範囲はこれにその従業員Beanのすべての要求に

<bean id="employee" class="com.mycompany.Employee" scope="prototype"/> 

として試作品であることを確認することができますうん、あなたは新しいオブジェクトの従業員を取得します。

豆の他のスコープ

  • シングルトンがあります。これは、春のIoCコンテナ(デフォルト)ごとに単一のインスタンスにBean定義をスコープ。
  • リクエスト:すべてのHTTPリクエストで、新しいBeanが作成されて配信されます。
  • プロトタイプ:リクエスト(apiリクエスト)ごとに、新しいBeanが作成されます。
  • セッション:このスコープは、HTTPセッションに対するBean定義です。

注:データベースモデルクラスのBeanを作成することはお勧めしません。永続レイヤーが処理するためです。

関連する問題