小编Pau*_*enn的帖子

是否可以调整 Caffeine LoadingCache 以与 Spring Boot 的 @Cacheable 一起使用?

我正在开发一个大型 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> …

java spring caching spring-boot caffeine

8
推荐指数
1
解决办法
2707
查看次数

为什么在控制台中通过==的参数来改变输出?

如果我打开浏览器控制台(在Chrome/Firefox中测试)并输入:

null == {}
Run Code Online (Sandbox Code Playgroud)

我明白了:

但是,如果我将两个参数都传递给==运算符,而是键入:

{} == null
Run Code Online (Sandbox Code Playgroud)

我明白了:

未捕获的SyntaxError:意外的令牌==

图片:

在此输入图像描述

  • 为什么会这样?
  • 为什么这只发生在控制台中,而不是在浏览器在HTML页面中执行脚本时?

编辑:

问题35812626个地址本,并解释为JS解析原因{}作为代码块,它使用三重等于(严格比较)运算符===,而不是双等于==.正如用户在下面指出的那样,绝对可以遵循代码块==而不会导致语法错误:

{} == {} // false
Run Code Online (Sandbox Code Playgroud)

怎么会这样,我的例子没有?

javascript equals-operator browser-console

7
推荐指数
1
解决办法
118
查看次数

如何将 java.util.Optional 与 REST API 一起使用?

我有一堂课看起来像

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 json jackson java-8

5
推荐指数
1
解决办法
4058
查看次数