我知道在大多数编程场景中,当有0个元素时,首选的是空集合为null集合.但是,大多数使用JSON的语言(如JavaScript)会将空列表/对象视为true,将null视为false.例如,这将是true和JavaScript中的对象:
{
"items_in_stock": {"widgets":10, "gadgets": 5}
}
Run Code Online (Sandbox Code Playgroud)
但这也是事实:
{
"items_in_stock": {}
}
Run Code Online (Sandbox Code Playgroud)
这是错误的:
{
"items_in_stock": null
}
Run Code Online (Sandbox Code Playgroud)
JSON的空对象/列表是否有约定?那么数字,布尔值和字符串呢?
我想在我的项目中使用Typesafe的Config,但我不想在任何集成或生产服务器的文件系统上的任何文件中以明文形式显示任何密码.另外,我不想使用环境变量来存储明文密码.
理想情况下,我想要一个类似于Spring可用的Jasypt EncryptablePropertyPlaceholderConfigurer的解决方案,它允许我将一些属性值指定为加密,并让配置系统在将值递减到应用程序之前自动解密它们.我想使用JCE密钥库来存储密钥并将其传递到我的应用程序中,但我也对其他使用数据库存储密钥的工具持开放态度.
有没有人设法让Typesafe Config项目以这种方式工作?
更新:sourcedelica批评依赖于将密钥作为环境变量传递的解决方案是完全正确的.我改变了我的问题,要求使用更安全的方式处理密钥的解决方案.
我想以编程方式强制断路器为特定组打开.我想我可以通过在组中的命令上设置配置来强制打开并运行该命令来做到这一点.但是,这似乎不起作用.这可能吗?我应该采取不同的方法吗?这是我试过的第二次assertEquals调用失败的测试.
import com.netflix.hystrix.HystrixCommand;
import com.netflix.hystrix.HystrixCommandGroupKey;
import com.netflix.hystrix.HystrixCommandProperties;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class ForceCircuitBreakerCommandTest {
@Test
public void testForceOpen(){
assertEquals(Boolean.TRUE, new FakeCommand().execute());
new OpenCircuitBreakerCommand().execute();
assertEquals(Boolean.FALSE, new FakeCommand().execute());
}
private class FakeCommand extends HystrixCommand<Boolean> {
public FakeCommand(){
super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("TestGroup")));
}
@Override
public Boolean run(){return Boolean.TRUE;}
@Override
public Boolean getFallback() {return Boolean.FALSE;}
}
private class OpenCircuitBreakerCommand extends HystrixCommand<Boolean> {
public OpenCircuitBreakerCommand(){
super(Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("TestGroup"))
.andCommandPropertiesDefaults(HystrixCommandProperties.Setter()
.withCircuitBreakerForceOpen(true)));
}
@Override
public Boolean run(){return Boolean.TRUE;}
@Override
public Boolean getFallback() {return Boolean.FALSE;}
}
}
Run Code Online (Sandbox Code Playgroud)