当我们写下面的代码
Stream.of(1,2,3,4,5).filter(i -> (i%2 == 0)).map( i -> i*i );
Run Code Online (Sandbox Code Playgroud)
表达式i -> (i%2 == 0)或i -> i*i将变成私有方法.
在我的用例中,编写了一个junit测试以确保没有方法是私有的(是啊,那是强制的),并且这些lambda表达式失败了.
有人可以提出一些建议,其中我不必更改junit来为lambda表达式添加一些排除,但是让这些表达式在内部创建受保护的方法吗?
我想在 spring boot 应用程序中实现 SSL,其中,我还想加密(出于测试目的,我用 base 64 对其进行编码)密钥库的密码,我将其作为 JVM 参数传递给 spring boot 应用程序。
密钥库的密码稍后将按以下方式用于解密(现在是 base 64 解码)并动态形成 EmbeddedServletContainerFactory。
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcatFactory = new TomcatEmbeddedServletContainerFactory();
tomcatFactory.setSsl(createSsl());
tomcatFactory.setPort(sslConfig.getHttpsPort());
return tomcatFactory;
}
private Ssl createSsl() {
Ssl ssl = new Ssl();
try {
ssl.setKeyStore("/path/to/keystore.pkcs12");
ssl.setKeyStorePassword(new String(Base64.getDecoder().decode(sslConfig.getKeyPassword())));
ssl.setKeyAlias(sslConfig.getKeyAlias());
} catch (Exception e) {
logger.error(e.getMessage());
}
return ssl;
}
Run Code Online (Sandbox Code Playgroud)
JVM 参数:
-Dtls.keyAlias=tomcat
-Dtls.key-store-password=cGFzc3dvcmQ=
Run Code Online (Sandbox Code Playgroud)
POJO 用于存储从 JVM 参数获取的别名和密码:
@Component
public class SSLConfig {
@Value("#{systemProperties['tls.keyAlias']}")
public String keyAlias;
@Value("#{systemProperties['tls.key-store-password']}")
private String keyPassword;
....getters …Run Code Online (Sandbox Code Playgroud)