2016-08-30 6 views
1

Ich habe einen Federkontext, der @ComponentScan ausführt.Importieren der Federkonfiguration und Ausschluss von Filtern

Ich möchte eine Variante meiner Konfiguration hinzufügen, die bestimmte Beans entweder durch den Paketnamen oder eine Regex ausschließt. Mir ist bekannt, dass ich mit @Import andere Konfigurationen importiere.

Aber könnte ich eine Konfiguration importieren und ihre Komponente scannign überschreiben, indem ich einen Ausschlussfilter mache? Ob das funktioniert?

@Configuration 
@ComponentScan(value = { "my.app.pack1", "my.app.pack2" }) 
public class ClientApplicationConfig {} 



@Configuration 
@ComponentScan(value = { "my.app.pack1" }, 
    excludeFilters = @ComponentScan.Filter(type = FilterType.ASPECTJ, pattern = "my.app.pack1.ignore.*")) 
    public class DifferentClientAppConfig {} 
+0

Haben Sie es versucht? Ich würde es nicht erwarten, da beide Komponenten-Scans zu erkannten Komponenten führen, die nicht zusammengeführt werden. –

Antwort

0

Ja, Sie können es tun. Versuchen Sie beispielsweise Folgendes:

@Configuration 
@ComponentScan(value={"my.app.pack1"},[email protected](type=FilterType.CUSTOM,value=MainConfig.WebExclude.class)) 
public class MainConfig 
{ 
    public static class WebExclude extends RegexPatternTypeFilter{ 

    public WebExclude(Pattern aPattern) 
    { 
     super(Pattern.compile("my.app.pack1\\.ignore")); 
    } 
... 

Sie können es geben, was Regex Sie möchten. Dies wird Komponente Scan my.app.pack1 mit Ausnahme von my.app.pack1.ignore. *

Verwandte Themen