2016-11-30 4 views
1

Collegues, habe ich Hauptklasse, die wie folgt aussieht:Wie lade ich verschiedene Kontextkonfigurationsklassen hoch?

public class App { 

    static final Logger LOG = Logger.getLogger(App.class.getName()); 

    public static void main(String[] args) { 


     for(int i = 0; i < args.length; i++) { 



      switch (args[i]) { 
       case "OrderUpload": 
        ApplicationContext ctxOrderUpload = new AnnotationConfigApplicationContext(AppConfigBasic.class); 
        OrderUpload OrderUpload = ctxOrderUpload.getBean(OrderUpload.class); 
        OrderUpload.process(); 
        break; 
       case "TrdUpload": 
        ApplicationContext ctxTrdUpload = new AnnotationConfigApplicationContext(AppConfig.class); 
        TrdUpload TrdUpload = ctxTrdUpload.getBean(TrdUpload.class); 
        TrdUpload.process(); 
        break; 
       default: 
        LOG.info("Process is not defined - > " + args[i]); 
        System.exit(0); 
      } 

     } 
} 

Und ich zwei Config-Klassen haben:

@Configuration 
@EnableTransactionManagement 
@ComponentScan 

public class AppConfigBasic {} 

und erweiterte Konfigurations

@Configuration 
@EnableTransactionManagement 
@ComponentScan 

public class AppConfig extends AppConfigBasic {} 

Warum, wenn ausführen java -jar app.jar OrderUpload Federlasten Bohnen auch von AppConfig (nicht nur von AppConfigBasic`)? Wie zwei verschiedene Kontextkonfigurationsdateien für verschiedene Fälle in Switch verwenden? Danke.

Antwort

1

Aufgrund Ihrer @ComponentScan im AppConfigBasic - es einschließlich sollte Ihre AppConfig (nicht vergessen @ComponentScan auch @Configuration Bohnen abtastet).

Seien Sie präziser in Ihrem @ComponentScan nicht das Paket Ihrer AppConfig oder Alternative zu schließen (und wahrscheinlich vorzugsweise) die @ComponentScanexcludeFilters functionality.

Verwandte Themen