Spring > di-container

  • DI(IoC) container
    • オブジェクトの生成、および依存関係をコンテナが管理する。
    • コンテナによって管理されるオブジェクト=ビーン
    • ビーンの生成と管理の情報はメタ設定データに書かれる
    • DIコンテナ⇒ org.springframework.context.ApplicationContext
  • Java-based container configuration
    • コンテナ⇒ AnnotationConfigApplicationContext
    • CGLIBが必要:
      <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>2.2.2</version>
      </dependency>
      
    • 関連アノテーション
      • @Configuration (クラス)
      • @Bean (メソッド)
      • @Component
      • JSR-330
    • コンポーネントスキャン:AnnotationConfigApplicationContext#scan
      • メタ設定クラス(@Configration付)自体もコンポーネントスキャン(@Component)対象で、refreshされると@Beanメソッドのビーンが登録される。
      • web⇒ AnnotationConfigWebApplicationContext
    • programaticなコンテナ作成:AnnotationConfigApplicationContext#register
    • @Configurationクラスの共有・一元化⇒@Import
    • 他の@Configurationクラス内の@Beanメソッドの参照
      • ビーンをインジェクションする。
      • @Configurationクラスをインジェクションし、Beanメソッドを明示的に
      • @Configurationインターフェースをインジェクションし、Beanメソッドを明示的に
    • XMLとの併用
      • XMLから<bean/>で@Configrationクラスを参照する
      • XMLから<context:component-scan/>で@Configrationクラスを参照する
      • @Configrationクラスから@ImportResourceでXMLを参照する
    • @Beanの利用
      • @Configurationまたは@Componentクラスで使用可
      • @Beanの構成
         @Bean
         public <ビーンのクラス> <ビーン名>() {...}
        
      • @PostConstruct、@PreDestroy、Lifecycleコールバックインターフェースのサポート
      • *Awareインターフェースのサポート
      • コールバックインターフェースに頼らなくても、Javaコードで自由にビーンの生成ができる!
      • スコープのサポート:@Scope
      • scope proxyの例
        @Bean
        @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
        
      • lookup-methodインジェクションは、Javaで書くとより自然にできる
      • ビーン名、aliasは @Bean(name=...)
最終更新:2012年02月24日 16:39
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。