我正在开发一个大型 Spring Boot 2.1.5.RELEASE 应用程序,使用 Caffeine 作为缓存提供程序。为了防止 I/O 瓶颈,我LoadingCache<K,V>在(基本上)以下方式中使用了咖啡因:
LoadingCache<K, V> cache = Caffeine.newBuilder()
.refreshAfterWrite(1, TimeUnit.MINUTES)
.build(loadStuffOverHttp());
Run Code Online (Sandbox Code Playgroud)
据我所知,如果不使用LoadingCache.
但是,LoadingCache 没有实现 Spring 的Cache. 这意味着我不能依赖@Bean方法来注册我的缓存,每个缓存都需要进行不同的配置。理论上,在 Spring 上下文中注册将允许它们与 Spring 的@Cacheable注释结合使用。
从我从CaffeineCacheConfiguration.java的源代码中可以看出,我也不能依赖 Spring Boot 的自动配置。类型的 Bean CaffeineCache(用于 Caffeine 的Spring 缓存适配器模式Cache<K,V>)是自动注册的,但适配器强制我将其<Object, Object>用作CacheLoader<K, V>. 我只想把这作为最后的手段。
这个 SO 问题表明可以以编程方式配置不同的缓存:
只需将您的自定义缓存公开为 bean。它们会自动添加到
CaffeineCacheManager.
但是,使用LoadingCache<K, V>(使用任意K, V, not <Object, Object> …
如果我打开浏览器控制台(在Chrome/Firefox中测试)并输入:
null == {}
Run Code Online (Sandbox Code Playgroud)
我明白了:
假
但是,如果我将两个参数都传递给==运算符,而是键入:
{} == null
Run Code Online (Sandbox Code Playgroud)
我明白了:
未捕获的SyntaxError:意外的令牌==
图片:
编辑:
而问题35812626个地址本,并解释为JS解析原因{}作为代码块,它使用三重等于(严格比较)运算符===,而不是双等于==.正如用户在下面指出的那样,绝对可以遵循代码块==而不会导致语法错误:
{} == {} // false
Run Code Online (Sandbox Code Playgroud)
怎么会这样,我的例子没有?
我有一堂课看起来像
public class ActiveDirectorySetup implements Serializable {
private ActiveDirectoryDataSource activeDirectoryDataSource;
private Optional<ShActiveDirectorySettings> shActiveDirectorySettings;
private Optional<SaActiveDirectorySettings> saActiveDirectorySettings;
// ...
}
Run Code Online (Sandbox Code Playgroud)
我通过 API 将其发送为
Optional<ActiveDirectoryConfiguration> configuration = store.getConfiguration();
if (configuration.isPresent()) {
return configuration.get();
}
Run Code Online (Sandbox Code Playgroud)
我在浏览器上看到的是
[
{
"activeDirectoryDataSource":{
"host":"localhost",
"port":0,
"userName":"user",
"password":"password",
"activeDirectoryQueryConfig":{
"base":{
"present":false
},
"filter":"filter",
"attributes":[
]
},
"activeDirectorySslSettings":{
"present":false
}
},
"shActiveDirectorySettings":{
"present":true
},
"saActiveDirectorySettings":{
"present":true
}
}
]
Run Code Online (Sandbox Code Playgroud)
对于看起来像这样的有效负载
{
"activeDirectorySetups": [
{
"activeDirectoryDataSource": {
"host": "localhost",
"port": 0,
"userName": "user",
"password": "password",
"activeDirectoryQueryConfig": {
"base": null,
"filter": …Run Code Online (Sandbox Code Playgroud) java ×2
caching ×1
caffeine ×1
jackson ×1
java-8 ×1
javascript ×1
json ×1
spring ×1
spring-boot ×1