我在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
只在生产环境中运行?