JAVAでDIを設定する


Java設定DIの使用方法


DIをJavaに設定

  • xml構文の代わりにjavaコードを使用する空の設定
  • による開発環境選択構成
  • Javaを使用してDI設定コードを提供する利点
  • タイプの安全で、保理
  • に非常に適しています.
  • プログラム名orクラス名エラー時コンパイルエラー*コンテナ作成クラス
  • AnnotationConfigApplicationContext
  • 主なコメント


    Javaコードを使用して、
  • XML設定ではなく、空のオブジェクトと空のオブジェクトの依存関係を作成します.
    @Configuration:空の設定メタデータ情報を含むクラスを宣言
    @Bean:クラス内の新しい空のオブジェクトを定義する
  • Java設定とXML関係


    メソッド名
  • @Beanを使用してコンテナで使用する空のオブジェクト
  • を作成
  • Java設定直接生成空オブジェクト
  • 取得オブジェクト
  • @Beanメソッド
  • メソッド名memberDAOを空の識別子として使用
  • XMLでは、<property>または<constructor-arg>タグを使用して、But Java設定の設定に依存オブジェクト
  • を直接注入する.

    di-javaサンプルプロジェクトの作成



  • di-javaパスの構成


  • Javaコード設定-@Beanメソッドを呼び出して取得

  • JavaConfig.java
  • package org.tukorea.di.config;
    import org.tukorea.di.persistence.MemberDAO;
    import org.tukorea.di.persistence.MemberDAOImpl;
    import org.tukorea.di.service.MemberService;
    import org.tukorea.di.service.MemberServiceImpl;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration
    
    @Configuration
    public class JavaConfig {
    	@Bean
    	public MemberDAO memberDAO() {
    		return new MemberDAOImpl();
        }
        
    	@Bean(name="service")
    	public MemberService memberService() {
    		return new MemberServiceImpl(memberDAO()); 
        }
    }
  • MemberSampleMain.java
  • package org.tukorea.di.main;
    import org.tukorea.di.config.JavaConfig;
    import org.tukorea.di.domain.StudentVO;
    import org.tukorea.di.service.MemberService;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    
    public class MemberSampleMain {
    	private static ApplicationContext ctx = null; 	
        public static void main(String[] args) throws Exception {
        System.out.println("안녕하세요 DI-JavaConfig");
    
    	ctx = new AnnotationConfigApplicationContext(JavaConfig.class); //자바설정코드 클래스 	
    	MemberService memberService = ctx.getBean("service", MemberService.class); 
        
        StudentVO vo = new StudentVO(); 
        vo.setId("kanadara");
        
    	StudentVO member = memberService.readMember("kanadara"); 		
        System.out.println(member);
    }
    
  • di-java空のオブジェクトのライフサイクルテスト
  • MemberServiceImpl.java
  • package org.tukorea.di.service;
    import org.tukorea.di.domain.StudentVO;
    import org.tukorea.di.persistence.MemberDAO;
    import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean;
    
    public class MemberServiceImpl implements MemberService, InitializingBean, DisposableBean {
    
    	private MemberDAO memberDAO;
    	.................................................................................................................................
    	@Override
    	public void afterPropertiesSet() throws Exception {
    		System.out.println("Init MemberServiceImple");
    	}
        
    	@Override
    	public void destroy() throws Exception {
        	System.out.println("Destroy MemberServiceImple");
    	}
    }

    空のオブジェクトのscopeとライフサイクル


    空のオブジェクトのスキャン(Scope)


    scopeプロパティ設定を使用して
  • 個のスペースを生成できる範囲
  • 単例:デフォルト設定で、各コンテナは空のオブジェクト
  • を作成します.
  • プロトタイプ:要求されるたびに
  • 個の空のオブジェクトが生成されます.
  • request:リクエストごとに空のオブジェクトを作成する
  • セッション:セッションごとに空のオブジェクトを作成する
  • アプリケーション:シーケンスボードコンテキストの作成時に空のオブジェクトを作成する
  • 空のオブジェクトのライフサイクル

  • アイドル初期化->アイドル->アイドルオフ
  • を順に行う.
  • 空を作成し、空が終了する前に初期化および前処理を実行する方法が提供される.
  • InitializationBean、DisposableBeanインタフェースによる前処理および後処理の実行