spring - exclude - componentscan アノテーション



<context:include-filter>と<context:exclude-filter>はSpringでどのように動作しますか? (2)

あなたはフィルタタイプ "regex"を使いたいと思うようです。 Spring Referenceの例を次に示します。

<beans>

   <context:component-scan base-package="org.example">
      <context:include-filter type="regex" expression=".*Stub.*Repository"/>
      <context:exclude-filter type="annotation"
                              expression="org.springframework.stereotype.Repository"/>
   </context:component-scan>

</beans>

私はいくつかのサービスを持っています:

  • example.MailService
  • example.LDAPService
  • example.SQLService
  • example.WebService
  • example.ExcelService

@Serviceアノテーションでアノテーションされています。 1つを除くすべてのサービスをどのように除外できますか?


たとえば、 MailServiceだけを使いたいとします。 私は次の設定を使用します:

<context:component-scan base-package="example">
    <context:include-filter type="aspectj" expression="example..MailService*" />
    <context:exclude-filter type="aspectj" expression="example..*Service*" />
</context:component-scan>

しかし、今ではすべてのサービスが除外されています。

MailServiceを含めるルールが1つ存在する場合、すべてのサービスが除外されるのはなぜですか?


この登録を実行するもう1つの方法は、単一の包含フィルタを使用する方法です。

<context:component-scan base-package="example" use-default-filters="false">
    <context:include-filter type="aspectj" expression="example..MailService*" />
</context:component-scan>

この場合、 "use-default-filters"属性を "false"に設定して、Springが

<context:include-filter type="annotation" 
                        expression="org.springframework.stereotype.Component"/>




configuration