spring自動スキャンjava類(context:component-scan)


表1.スキャンフィルタ方式  フィルタタイプの説明  注釈はcomp.baobaotao.SomeAnnotationが注釈の種類であれば、この注釈を使ったクラスを濾過することができます。  クラス名は全限定クラス名でフィルタリングします。comp.baobaotao.Bossをスキャンに指定することができます。comp.baobaotao.ca.caarを除外します。  正規表現 正規表現でフィルタリングの種類を定義します。comp.baobaotao.Default.*  AsppectJ表式はAsppectJ表式でフィルタリングの種類を定義します。以下の通りです。com.baobaotao.*Service+  以下は簡単な例です。
Javaコード
  •     
  •         expression="comp.baobaotao.service.*"     
  •     
  •         expression=「comp.baobaotao.util.*」     
  •     
  • 注目すべきは、構成項目は、注釈駆動Bean定義の機能を実行するためにクラスバッグをスキャンするだけでなく、注釈駆動自動注入の機能も有効にしているので、AutowiredAnnotationPostProcessorとCommon AnnotationBeabint PostProcessorを暗黙的に内部に登録しています。「context:annotationn config/」を削除できます。  デフォルトでは@Componentで定義されているBeanは全部singletonであり、他の作用範囲のBeanを使用するなら、@Scope注釈で目標を達成することができます。  明細書24.@Scopeでビーンの役割範囲を指定します。
    Javaコード
  • package comp.baobaotao      
  • import org.springframe ext.annotations.Scrope;      
  • …      
  • @Scope(「prototype」)      
  • @Component(「boss」)      
  • pblic クラス ボス {      
  •     …      
  • }     
  • このように、Spring容器からボスビームを取得すると、毎回戻ってくるのが新しい例です。  特殊な意味を持つ注釈を採用する。  Spring 2.5には@Componentのコメントを提供する以外に、@Repository、@Service、@Controllerという特殊な意味を持つコメントがいくつか定義されています。現在のSpringバージョンでは、この3つの注釈と@Componentは等価であるが、注釈類の名前からは、これらの3つの注釈は、それぞれ持久層、業務層、制御層(Web層)に対応していることが分かりやすい。この3つのコメントは@Componentに比べて新味がないですが、Springは以降のバージョンに特殊な機能を追加します。だから、Webなら アプリケーションは古典的な3層階層構造を採用しているので、耐久層、業務層、制御層それぞれに@Repository、@Service、@Controllerを用いて階層内のクラスに注釈を行い、@Componentでそれらの比較的中立的なクラスに注釈をしたほうがいいです。  注記配置とXML設定の適用の場合  これらのIOCコメントがあれば、元のXML配置の方式を完全に削除できますか?答えは否定です。いくつかの理由があります。  注釈の設定は、必ずしも先にXMLプロファイルより優れているとは限らない。Beanの依存関係が固定されている場合(ServiceがどのDAOクラスを使用しているか)、このような構成情報は配置時に調整されないので、注釈構成はXML構成よりも優れている。このような依存関係が展開時に調整されると、XML構成は明らかに注釈構成よりも優れています。注釈はJavaソースコードに対する調整であるため、ソースコードを書き換えて再コンパイルする必要があります。  Beanが自分で作成したクラス(JdbcTemplate、Session FactoryBeanなど)でないと、注釈配置は実施できなくなります。この場合、XML配置は唯一の利用可能な方法です。  注釈の配置はクラスレベルが多いですが、XML構成はより柔軟に表現できます。例えば@Transaction事務注釈よりも、aop/tx名前空間を使用する事務構成がより柔軟で簡単である。 
    したがって、アプリケーションを実現するには、注釈構成とXML構成を同時に使用する必要があります。クラスレベルが変動しない構成については、注釈構成を優先的に考慮することができます。これらの第三者類や調整しやすい配置についてはXML構成を優先的に考慮しなければならない。Springは、Bean作成とBean注入を具体的に実施する前に、この2つの構成の要素情報を融合させます。
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        					http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
         					http://www.springframework.org/schema/aop 
         					http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
         					http://www.springframework.org/schema/context 
         					http://www.springframework.org/schema/context/spring-context-3.0.xsd
          					http://www.springframework.org/schema/tx 
          					http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
      
        <!--      -->
        <context:component-scan base-package="geong.dao,geong.serviceImpl"/>