在 moqui 中设置应用程序和会话属性以便它们可供所有转换、服务和脚本代码使用的地方在哪里?
在这种情况下,我将在哪里初始化 AwsS3Client 以便可以重用它?
大多数 API 都有用于获取单例对象的工厂方法,或者被设计为为每次使用创建对象。在这些情况下,您不需要任何生命周期(初始化/销毁)管理。
如果您确实需要在启动和关闭时调用脚本最简单的地方是在 Moqui Conf XML 文件中,该文件在webapp-list.webapp元素下具有after-startup和before-shutdown元素。
Moqui 在标准的 Java Servlet 容器中运行,因此您还可以将内容添加到 web.xml 文件中(在构建 WAR 文件之前,或者解压缩 WAR 文件,更改 web.xml 文件,然后再次压缩它)。
Java 有更多 hack-ish 方法,例如使用具有静态初始化的类,但它不像真正的初始化/销毁代码那样干净。
尽管如此,我还是会研究 API 以了解它是如何设计使用的。最好使用它的单例工厂或在每次使用时初始化一个对象。通常它更像是事务管理器和数据库之类的东西,它们作为服务运行并且需要真正的生命周期管理。