spring-boot - 如何以编程方式为 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
作品仅在生产环境中运行?
解决方案
推荐阅读
- laravel - 视图没有返回存储在数据库中的属性
- opencv - 如何在“图像”中模拟高斯噪声峰值
- c++ - 类外的类函数模板定义
- elasticsearch - Elastic Search 中的 $pull 和 $push 查询
- python - 你如何使用python找到前x个素数?
- angular - 在 Angular 离子应用程序上安装和运行滚动魔法
- c++ - 根据派生类的大小创建一个数组
- c++ - 如何使用管道通过文件在父子之间共享数据?
- java - Java注释处理器不在生成的源中生成文件
- powershell - 如何在powershell中读取machine.config并检查是否存在密钥