如何上传不同的上下文配置class?
How to upload different context configuration class?
同学们,我的主要 class 看起来像:
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);
}
}
}
我有两个配置 classes:
@Configuration
@EnableTransactionManagement
@ComponentScan
public class AppConfigBasic {}
和扩展配置
@Configuration
@EnableTransactionManagement
@ComponentScan
public class AppConfig extends AppConfigBasic {}
为什么执行 java -jar app.jar OrderUpload
Spring 时也会从 AppConfig 加载 bean(不仅从 AppConfigBasic`)?
两个如何在 switch 的不同情况下使用不同的上下文配置文件?
谢谢。
因为你的 @ComponentScan
在 AppConfigBasic
- 它应该包括你的 AppConfig
(不要忘记 @ComponentScan
也在扫描 @Configuration
beans ).
在您的 @ComponentScan
中更加具体,不要包含您的 AppConfig
或替代方案(可能更可取)使用 @ComponentScan
excludeFilters functionality.
同学们,我的主要 class 看起来像:
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);
}
}
}
我有两个配置 classes:
@Configuration
@EnableTransactionManagement
@ComponentScan
public class AppConfigBasic {}
和扩展配置
@Configuration
@EnableTransactionManagement
@ComponentScan
public class AppConfig extends AppConfigBasic {}
为什么执行 java -jar app.jar OrderUpload
Spring 时也会从 AppConfig 加载 bean(不仅从 AppConfigBasic`)?
两个如何在 switch 的不同情况下使用不同的上下文配置文件?
谢谢。
因为你的 @ComponentScan
在 AppConfigBasic
- 它应该包括你的 AppConfig
(不要忘记 @ComponentScan
也在扫描 @Configuration
beans ).
在您的 @ComponentScan
中更加具体,不要包含您的 AppConfig
或替代方案(可能更可取)使用 @ComponentScan
excludeFilters functionality.