如何以编程方式定义Spring Boot应用程序的系统属性

时间:2018-10-24 09:40:16

标签: spring-boot

我在AWS上部署了spring boot应用程序。这些应用程序具有用于初始化数据库连接的共享属性(Autowired属性),并且还具有自己的属性。

我们现在正在做的是将应用程序特定的属性设置为application.properties。并且,我们有一个由Application类扩展的类,有一个static片段可以从S3加载所有属性。

这是基本应用程序

public abstract class BaseApp {
    static {
        /*
        logic to read properties from S3, and set to System.property
        */
        final GetObjectRequest request = new GetObjectRequest(bucketName, key);
        final S3Object s3obj = s3Client.getObject(request);
        final Properties prop = new Properties();
        prop.load(s3obj.getObjectContent());

        for (final Object k : prop.keySet()) {
            System.getProperties().put(k, prop.get(k));
        }
    }
}

对于每种服务

@SpringBootApplication
public class Application extends BaseApp {
    public static void main(final String[] args) {
        final SpringApplication app = new SpringApplication(Application.class);
        app.run(args);
    }
}

这里的问题是,在运行UT代码时,它还需要连接到s3。有什么解决方案可以让static只在生产环境中运行?

0 个答案:

没有答案