你们有没有自己的项目初创公司的小框架?我的意思是,每次开始时都需要做同样的事情:
上下文初始化 - 理想情况下在处理参数之后。有时没有交互式用户输入,有时使用输入阅读器。有时我们需要加载属性,有时不需要。然后我们需要让一个类脱离上下文并运行它的方法。编程....编程直到编写shell脚本将所有内容放在classpath上。
确实,它根据实际需要而有所不同。但在我看来,我一直在做着几乎一样的,从头开始一次又一次。有时我意识到我推迟工作只是因为我不想做这些恼人的初创公司。
如果有某种通用的Main类对指定的bean进行反射,上下文初始化,参数解析,交互式用户输入读取并让程序员做重要的事情,那将是很好的...所有设置都可以通过spring完成组态。我想我必须自己做。
我很感激你的想法
编辑:我将做什么:某种启动类将获得用户和开发人员参数(弹簧上下文文件的路径,使用用户参数设置的bean和实例化的bean,提供spring上下文和运行)。用于参数解析的轻量级api,可能是用于交互式用户输入的东西,可能很难答案 0 :(得分:2)
我使用一个抽象基类,从中启动所有命令行实用程序。初始化过程定义了一些基本的启动生命周期方法。我不使用命令行参数
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();
}
}
由于某些原因,我的基于摇摆的非交互式应用程序都没有使用命令行参数(args[]
),因为这些参数往往是带有安装程序和属性文件的服务。