オートスキャンのスプリングフィルタコンポーネント
このリンク://spring/spring-auto-scanning-components/[Spring自動コンポーネントスキャンチュートリアル]では、Springがコンポーネントを自動スキャンする方法を学びます。この記事では、オートスキャンプロセスでコンポーネントフィルタを実行する方法を説明します。
1.フィルタコンポーネント – インクルード
クラスが@Componentで注釈されていなくても、定義済みの “regex”と一致するコンポーネントの名前をスキャンして登録するには、Spring ”
filtering
“を使用するには次の例を参照してください。
DAO層
package com.mkyong.customer.dao; public class CustomerDAO { @Override public String toString() { return "Hello , This is CustomerDAO"; } }
サービス層
package com.mkyong.customer.services; import org.springframework.beans.factory.annotation.Autowired; import com.mkyong.customer.dao.CustomerDAO; public class CustomerService { @Autowired CustomerDAO customerDAO; @Override public String toString() { return "CustomerService[customerDAO=" + customerDAO + "]"; } }
スプリングフィルタリング。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:component-scan base-package="com.mkyong" > <context:include-filter type="regex" expression="com.mkyong.customer.dao.** DAO.** "/> <context:include-filter type="regex" expression="com.mkyong.customer.services.** Service.** "/> </context:component-scan> </beans>
それを実行します
package com.mkyong.common; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.mkyong.customer.services.CustomerService; public class App { public static void main( String[]args ) { ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"Spring-AutoScan.xml"}); CustomerService cust = (CustomerService)context.getBean("customerService"); System.out.println(cust); } }
出力
CustomerService[customerDAO=Hello , This is CustomerDAO].... このXMLフィルタリングでは、すべてのファイルの名前にDAOまたはService(** DAO。** 、** Services。** )という単語が含まれ、Springコンテナに検出されて登録されます。 === 2.フィルタコンポーネント - 除外 一方、特定のコンポーネントを除外して、SpringがSpringコンテナでそれを検出して登録しないようにすることもできます。 @Serviceで注釈を付けられたファイルを除外します。
<context:component-scan base-package="com.mkyong.customer" > <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/> </context:component-scan>
DAOの単語を含むファイル名を除外します。
<context:component-scan base-package="com.mkyong" > <context:exclude-filter type="regex" expression="com.mkyong.customer.dao.** DAO.** "/> </context:component-scan>
=== ソースコードをダウンロードする ダウンロード - リンク://wp-content/uploads/2010/03/Spring-Filter-Auto-Scan-Example.zip[Spring-Filter-Auto-Scan-Example.zip] link://tag/spring/[spring]