创建在运行时加载属性集的服务的最佳方法是什么(bean 传递“xyz”并加载 xyz.properties)?在输入命令以启动服务之前,需要能够将这些属性文件放入类路径之外的文件夹中(编辑:这可能在程序运行时的任何时候发生)。
我已经有一个系统可以做到这一点,我们已经使用了一年多,但我正在迁移到 spring 以使代码更加模块化(通过 DI 更容易地定制服务)并且更容易维护。从 IoC 的角度来看,我当前创建环境然后将其与“this”一起传递给依赖项的方法似乎是颠倒的。
有没有办法使用 PropertyPlaceholderConfigurer 而无需硬编码属性文件的名称?也许只是对我传递给它的依赖项可以加载的服务的构造函数的变量的引用?到目前为止,看起来我必须创建一个服务并在没有任何配置的情况下注入它的依赖项,然后为每个服务调用一个单独的加载方法来传递属性,但这似乎我并没有真正使用 spring。
用例:该应用程序将客户端连接到各种服务器,并将来自其他应用程序的请求转发到这些服务器。非程序员必须能够在不关闭或重新启动应用程序的情况下添加新的配置文件。配置文件将包括主机、端口和登录信息等基本信息,但也包括更复杂的信息,例如是否使用 tcp/http、ssl/https(这将确定要使用的客户端类型)以及超时和池 min/max/等(这将需要默认值)。