我使用一个抽象基类,从中启动所有命令行实用程序。初始化过程定义了一些基本的启动生命周期方法。我不使用命令行参数
public abstract class MyAppBase {
public abstract String[] getSpringConfigResource();
public void loadConsoleApplication() {
try {
preLoad();
initializeSpring();
loadConfiguration();
loadDynamicComponents();
postApplicationLoad();
}
catch (Exception ex) {
handleStartupException("error initialzing application", ex);
}
}
...
}
具体的子类如下:
public class MyApp extends MyAppBase {
public String[] getSpringConfigResource() {
return new String[] { "someapp/appctx.xml", "util/appctx2.xml" };
}
protected void postApplicationLoad() {
SomeServer server = springCtx.getBean("server");
server.start();
}
public static void main(String args[]) {
initLogging("com/me/myAppLog4j.xml", MyApp.class);
MyApp myApp = new MyApp ();
myApp.loadConsoleApplication();
}
}
出于某种原因,我的基于Swing的非交互式应用程序都没有使用命令行参数(
args[]
,因为这些通常是带有安装程序和属性文件的服务。