小编mas*_*lan的帖子

在codehaus消失之后,maven-rpm-plugin文档在哪里

我对这个问题感到不好,但谷歌没有帮助.在codehaus消失之后,谁能告诉我maven-rpm-plugin的文档在哪里?

java rpm maven-plugin maven

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

Spring Data REDIS - 具有奇怪前缀的哈希键,并且 HSCAN 无法正确返回结果

我将 spring boot (无关)与 spring-data-redis:jar:2.0.9 结合使用,它使用 lettuce 连接到我的 REDIS。我使用的哈希结构包含大约 100 个键。在这些键下,我放置了一些类型也不相关的对象:

private static final String HASH_KEY_NAME = "myspecialhashes:somekey";

@Autowired
private RedisTemplate<String, MyDto> myDtoRedisTemplate;
Run Code Online (Sandbox Code Playgroud)

现在我只是将对象列表放入哈希中,使用它们的 id 作为键:

myDtoRedisTemplate.opsForHash().put(HASH_KEY_NAME, dto.getId(), dto);
Run Code Online (Sandbox Code Playgroud)

这工作得很好,并且从哈希中检索所有元素都很好,并且仅检索键

List allDtosRaw = myDtoRedisTemplate.opsForHash().values(HASH_KEY_NAME);
Run Code Online (Sandbox Code Playgroud)

另外,在列出键时:

myDtoRedisTemplate.boundHashOps(HASH_KEY_NAME).keys()
Run Code Online (Sandbox Code Playgroud)

看起来不错,返回的密钥集以以下内容开头:

(java.util.LinkedHashSet<E>) [fakeservicetest:dummy3:write, fakesingle:dummy:sub1:write, ....
Run Code Online (Sandbox Code Playgroud)

由于有很多键,我希望能够使用 HSCAN 过滤以令牌开头的对象列表,而不是获取所有键并在我的 Java 应用程序中过滤它们。所以,这就是我如何进行 HSCAN 来获取所有以“fake”开头的哈希条目

List filteredDtosRaw = new LinkedList<>();
ScanOptions scanOptions = ScanOptions.scanOptions().match("fake*").count(10000).build();
Cursor cursor = myDtoRedisTemplate.boundHashOps(HASH_KEY_NAME).scan(scanOptions);
        cursor.forEachRemaining(filteredDtosRaw ::add);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这返回零结果。我尝试了各种方法来解决这个问题并取得了一些成果。最终我转向 redis 命令行来看看 REDIS 是如何看待这一切的

redis-cli HSCAN "myspecialhashes:somekey" 0 MATCH "fake*" COUNT 1000
Run Code Online (Sandbox Code Playgroud)

确实是零结果。接下来的事情是查看其中的所有键并查看哈希中实际包含的内容

redis-cli …
Run Code Online (Sandbox Code Playgroud)

java redis lettuce spring-data-redis

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

Spring引导验证CGLIB增强控制器组件未自动装配

我已经使用 Rest 控制器创建了一个 Spring Boot 应用程序(用户 spring-boot-starter-parent V.2.2.2.RELEASE),工作正常,现在我添加了一个依赖项:

    <dependency> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-validation</artifactId> 
    </dependency> 
Run Code Online (Sandbox Code Playgroud)

并在我的控制器类上添加了@Validated,以便验证其中的所有方法:

@RestController
@Validated 
public class UserController {
  @Autowired
  private UserService userService;

  @PostConstruct
  public void init() {
    System.out.println("test");
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,控制器方法在调用时开始抛出 NullPointerExceptions,因为 userService 为 null;我做了一个@PostConstruct 作为测试。显然,它是在一个正常的未增强的 bean 上调用的,该 bean 的字段已正确自动连接。但是,当通过 HTTP 调用控制器时,不会调用这个未增强的 bean,但它是类 UserController$$EnhancerBySpringCGLIB$$ 的 bean,并且它的 userController 未自动装配。我真的不知道为什么,因为这应该很简单,据我所知,没有太多需要配置的。所以我猜由于某种原因,spring 不会将依赖项注入到 CGLIB 增强类中,或者只是将其注入到错误的类中。当我删除@Validated时,一切都再次正常工作,但当然没有验证。

hibernate-validator cglib nhibernate-validator spring-boot

0
推荐指数
1
解决办法
543
查看次数