0

这个问题有点类似于这个现有的问题

我仍在尝试导航或尝试找到可以自定义的正确 Spring Boot 代码。我需要开发与现有配置服务器连接并为键提供值的 java SDK。此 SDK 将用于 java 应用程序,可能是也可能不是 spring 应用程序。QA 将使用相同的 SDK 对配置服务器进行回归测试。

所以问题是,如果给定

  1. 配置服务器地址
  2. 应用名称
  3. 活动配置文件(不需要标签,它将是默认主控),我可以初始化一些配置客户端类,它会给我一些简单的方法,比如public String getKeyValue(final String key)

我正在查看类的来源,如ConfigServicePropertySourceLocatorCompositePropertySourceConfigClientAutoConfigurationConfigServiceBootstrapConfiguration等。

我需要手动构建环境对象吗?如果是,如何?

4

1 回答 1

0

我有一些成功。发布可能的答案供其他人进一步微调。

@SpringBootApplication
public class ConfigSDKApp {

    @Autowired
    public SomeSpringBean someBean = null;

    private static ConfigSDKApp INSTANCE = null;

    public synchronized static ConfigSDKApp getInstance(String[] args) {
        if (null != INSTANCE) {
            return INSTANCE;
        }

        SpringApplication sprApp = new SpringApplication(ConfigSDKApp.class);
    sprApp.setWebEnvironment(false);
    ConfigurableApplicationContext appContext = sprApp.run(args);
    ConfigSDKApp app = appContext.getBean(ConfigSDKApp.class);//new ConfigSDKApp();

        INSTANCE = app;
        return INSTANCE;
    }
}

这是一种单例类(但公共构造函数)。因此代码气味。另外,如果这个 SDK 在 springboot 客户端中运行怎么办。ApplicationContext 和环境已经初始化。

于 2016-07-27T15:50:02.183 回答