gpt4 book ai didi

java - 应用程序初始化的首选方式

转载 作者:行者123 更新时间:2023-12-02 08:32:11 25 4
gpt4 key购买 nike

你们有自己的项目启动小框架吗?我的意思是,每次一开始就需要做同样的事情:

<小时/>

上下文初始化 - 最好是在处理参数之后。有时没有交互式用户输入,有时有输入阅读器。有时我们需要加载属性,有时则不需要。然后我们需要脱离上下文获取一个类并运行它的方法。编程......编程直到编写 shell 脚本将所有内容放在类路径上。

<小时/>

确实,根据实际需要有所不同。但在我看来,我几乎总是在做同样的事情,一次又一次从头开始。有时我意识到我推迟工作只是因为我不想做这些烦人的初创公司。

<小时/>

如果有某种通用的 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[]),因为这些往往是带有安装程序和属性文件的服务。

关于java - 应用程序初始化的首选方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3056177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com