このリンク://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]