JavaのSpring注釈配置bean実例コード解析


前のページは全部xml構成beanを使っています。100個以上のbeanがあれば、これは考えられないことです。だから、コメントを使ってbeanを配置してください!!
【1】注釈カテゴリ
@Component:基本的な注釈はSpring(ここをクリックして「Springアプリケーション開発完全マニュアル」をダウンロードできます。)で管理されているコンポーネントを識別しています。
@Repository:耐久層コンポーネントを識別する
@Service:サービス層(業務層)コンポーネントを識別する
@Controller:表現層コンポーネントを識別する
Springは、classpathの下から自動的にスキャンし、検出し、実用化することができます。特定の注釈を持つコンポーネントです。
スキャンされたコンポーネントに対して、Springはデフォルトの名前ポリシーがあります。非限定クラス名を使って、最初の文字を小文字にします。コメントでは、value属性値によってコンポーネントの名前を識別することもできます。
【2】context:component-scan
コンポーネントクラスで特定の注釈を使用した後、更にSpringのプロファイルでを宣言する必要があります。base-package属性はスキャンが必要なベースパッケージを指定して、Spring容器はこのベースパッケージの中とそのサブパッケージのすべての種類をスキャンします。
複数のパケットをスキャンする必要がある場合は、カンマ区切りを使用してもよく、ベースパックのすべてのクラスではなく特定のクラスだけをスキャンしたい場合は、resource-pattern属性を使用して特定のクラスをフィルタリングすることができます。例:

<context:component-scan base-package="com.web.annotation" resource-pattern="repository/*.class"
use-default-filters="true">
<context:include-filter>             
<context:exclude-filter>               
<context:component-scan>          <context:include-filter>   <context:exclude-filter>    
一つの複雑な

        repository   :resource-pattern="repository/*.class"
  fileter(use-default-filters="true")         ,     include-filter ,     false.
 <context:component-scan base-package="com.web.annotation" resource-pattern="repository/*.class" 
 use-default-filters="true">
  <!--    Repository   ,    -->
<!--  <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>-->
  <!--    Repository   ,    -->
<!--  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>-->
  <!--    Repository        ,    -->
<!--  <context:include-filter type="assignable" expression="com.web.annotation.repository.UserRepository"/>-->
  <!--    Repository        ,    -->
<!--  <context:exclude-filter type="assignable" expression="com.web.annotation.repository.UserRepository"/>-->
 </context:component-scan>
【3】コードに他のbeanを引用し、簡単な例は以下の通りである。

 @Resource(name="userRepository")
 private UserRepository repository;
 public void add(){
  System.out.println("UserService add...");
  repository.save();
 }
他のbeanを引用すると次のような方法があります。
@Autowiredと@Resource、@Inject
【4】@Autowiredを使って自動組立ビーン
@Autowired注解自動組立は互換性のあるタイプの単一Bean属性、コンストラクタ、一般フィールド(非publicでも)を備えています。すべてのパラメータを持つ方法は@Authwired注解を適用できます。
デフォルトはタイプ別にマッチしています。複数のタイプが実装されている場合、自動的に注釈定義の名前を調べます。まずマッチします。カテゴリのコメントが定義されていない場合は、異常を投げます!
1)デフォルトでは、@Authwired注解を使用する属性はすべて設定されている必要があります。
SpringがマッチするBeanの組み立て属性を見つけられない場合、例外を投げます。もしある属性が設定されていないなら、@Authwired注解のrequired属性はfalseに設定できます。
2)デフォルトでは、IOC容器に複数のタイプの互換性のあるビーンが存在する場合、タイプの自動組立では動作しない。この時@Qualfierの注釈にBenの名前を提供してもいいです。Springは方法に対する入力表示を許可します。@QualfiterはBeanに注入する名前を指定しました。
3)@Authwired注釈は配列タイプの属性にも適用できます。この時Springは全てのマッチするBeanを自動組立します。
4)@Authwired注釈は、集合属性にも適用され、このときSpringは、セットのタイプ情報を読み取り、これに対応する全てのBeanを自動的に組み立てる。
5)@Authwired注解java.util.Mapに使用される場合、このMapのキー値がStringである場合、Springは自動的にMap値タイプに対応したBenをキーとして組み立てる。
【5】@Resourceを使って自動組立ビーン
@Resource注释では、ビーンの名前の属性を提供することが要求されます。この属性が空の場合、自動的にビーンの名前として、表示先の変数または方法名を採用します。
この注釈を使うのが一番好きです。フィールド値@Resource(value=「userService」)を書いて、簡単で便利です。一つのタイプの複数の実装が心配されなくても、@Qualfierを追加して正確にマッチングする必要がありません。
【6】注釈はbeanを取得し、使用方法は、例えば:

@Repository(value="bookShopDAO")
public class BookShopDAOImpl implements BookShopDAO {
}
タイプは実装タイプです。

 @Resource(name="bookShopDAO")
 BookShopDAOImpl bookShopDAO;
BookShopDAOImplのすべての方法を使用することができます!
タイプはインターフェースタイプです。

 @Resource(name="bookShopDAO")
 BookShopDAO bookShopDAO;
 //       
BookShopDAOで定義されているすべての方法しか使用できません!クラスのカスタマイズを実現する方法は使用できません。
締め括りをつける
本文はSpring注釈構成beanの例示的なコード解析の内容についてここまでです。興味のある友達はJavabeanとmapの相互変換方法コード例javaの中でjavaBeanとBeanの深い理解javaBeanの基礎知識とよくある文字化けの解決方法などを参照してください。皆さんの応援に感謝します。