你们有没有自己的项目启动小框架?我的意思是,每当一开始需要做相同的事情时:
上下文初始化-理想情况是在处理完参数之后。有时没有交互式用户输入,有时有输入阅读器。有时我们需要加载属性,有时则不需要。然后,我们需要从上下文中获取一个类并运行其方法。编程....编程,直到编写外壳脚本以将所有内容放置在类路径上。
的确,它会根据实际需要而有所不同。但是在我看来,我一次又一次地总是做着几乎相同的事情。有时我意识到我之所以推迟工作,是因为我不想做这些烦人的创业公司。
如果有某种通用的Main类对指定的bean进行反射,上下文初始化,参数解析,交互式用户输入读取并让程序员完成重要的事情,那将是非常不错的……所有设置都可以通过spring配置完成。我想我必须自己做。
我很感谢你的想法
编辑:我将要做的事情:一种启动类,它将获取用户和开发人员参数(Spring上下文文件的路径,使用用户参数设置的bean和要实例化的bean,提供spring上下文并运行)。用于参数解析的轻量级api,可能用于交互式用户输入,可能很难
最佳答案
我使用一个抽象基类,从该基类中启动所有命令行实用程序。初始化过程中定义了一些基本的启动生命周期方法。我不使用命令行参数
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[]
),因为这些参数通常是带有安装程序和属性文件的服务。