首页 > 解决方案 > 如何使用 spring-data-aerospike 进行设置

问题描述

环境:

这是我的应用程序代码和属性。

// application.properties
aerospike.hosts=xxx:3000
aerospike.namespace=test

// aerospike configuration class
@Configuration
@RequiredArgsConstructor
@EnableConfigurationProperties(AerospikeConfiguration.AerospikeConfigurationProperties.class)
@EnableAerospikeRepositories(basePackageClassses = TestAeroRepository.class)
public class AerospikeConfiguration extends AbstractAerospikeDataConfiguration {
  private final AerospikeConfigurationProperties aerospikeConfigurationProperties;

  @Override
  protected Collection<Host> getHosts() {
      return Host.parseServiceHosts(aerospikeConfigurationProperties.getHosts());
  }

  @Override
  protected String nameSpace() {
    return aerospikeConfigurationProperties.getNamespace();
  }

  @Data
  @Validate
  @ConfigurationProperties("aerospike")
  public static class AerospikeConfigurationProperties {
     @NotEmpty
     String hsots;

     @NotEmpty
     String namespace;
  }
}

# Entity class
@Value
@Document
@Builder(toBuilder = true)
@AllArgsConstructor
public class testEntity() {
   @Id
   int id;

   @Field
   String name;

   @Field
   String timestamp;
}

@Repository
public interface TestAeroRepository extends AerospikeRepository<TestEntity, Integer> {
}

public interface TestAeroService {
  void save();
}

@Service
@RequiredArgsConstructor
public class TestAeroServiceImpl implements TestAeroService {
  private final TestAeroRepository testAeroRepository;

  @Override
  public void save(TestEntity entity) {
    testAeroRepository.save(entity);
  }
}

我检查了 Aerospike 客户端连接没有问题。但是执行 save() 方法时发生错误。

org.springframework.cglib.core.ReflectUtils.defineClass(Ljava/lang/String;[BLjava/lang/ClassLoader;Ljava/security/ProtectionDomain;Ljava/lang/Class;)Ljava/lang/Class;

必须在执行应用程序之前进行设置吗?
我没有做套路。我的代码有问题吗?

标签: spring-bootaerospike

解决方案


您使用的是旧版本的 spring-data-aerospike(2.0.1.RELEASE 于 2019 年 4 月发布)是否有机会升级到最新版本?2.4.2.发布

您可以在此处查看如何设置简单的弹簧数据 aerospike 应用程序:https ://medium.com/aerospike-developer-blog/simple-web-application-using-java-spring-boot-aerospike-database-and-docker- ad13795e0089

请分享整个项目的代码和整个异常。

我会调查:

  1. 配置类(Aerospike Beans 创建)。
  2. testEntity 类的内容——你在主键字段上使用@Id 注释吗?
  3. 通过指定 testEntity 对象(... extends AerospikeRepository<testEntity, Object> {)扩展存储库类,您可以在我添加的链接中看到一个示例。

推荐阅读