我是 spring-aerospike-data 的新手,我希望有人能告诉我如何在发送时删除 @user_key
和 @_class
垃圾箱向应用程序发布请求。我正在尝试在我的 Rest-api 中使用 spring-areospike-data。请看下面的例子:
- POM 依赖:
<dependency>
<groupId>com.aerospike</groupId>
<artifactId>spring-data-aerospike</artifactId>
<version>3.0.0</version>
</dependency>
- Spring 版:2.5.1
- 配置类:
@Data
@Component
@ConfigurationProperties(prefix = "aerospike")
public class AerospikeConfigurationProperties {
private String host;
private int port;
private String namespace;
}
@Configuration
@EnableConfigurationProperties(AerospikeConfigurationProperties.class)
@EnableAerospikeRepositories(basePackages = "com.moneris.repositories")
public class AerospikeConfiguration extends AbstractAerospikeDataConfiguration {
@Autowired
private AerospikeConfigurationProperties aerospikeConfigurationProperties;
@Override
protected Collection<Host> getHosts() {
return Collections.singleton(new Host(aerospikeConfigurationProperties.getHost(),
aerospikeConfigurationProperties.getPort()));
}
@Override
protected String nameSpace() {
return aerospikeConfigurationProperties.getNamespace();
}
}
pom 依赖项: 这是我的 POJO:
@Data
@Document
@AllArgsConstructor
public class UserApi {
@Id
private String apiKey;
private String apiName;
private int enabled;
}
这里是 repo :
public interface AerospikeUserApiKeyRepository extends CrudRepository<UserApi, String> {
}
这里是服务:
@Service
@AllArgsConstructor
public class UserService {
AerospikeUserApiKeyRepository aerospikeUserApiKeyRepository;
public void addUserApiKey(UserApi userApi) {
aerospikeUserApiKeyRepository.save(userApi);
}
public Optional<UserApi> getUserApi(String apiKey){
return aerospikeUserApiKeyRepository.findById(apiKey);
}
}
这里是 Controller :
@RestController
@AllArgsConstructor
public class UserController {
UserService userService;
@PostMapping("/users/apiKey")
public void addUserApi(@RequestBody UserApi userApi) {
userService.addUserApiKey(userApi);;
}
@GetMapping("/users/apiKey/{apiKey}")
public Optional<UserApi> getUserApi(@PathVariable("apiKey") String apiKey) {
return userService.getUserApi(apiKey);
}
}
当我运行我的应用程序并将发布请求发送到 http://localhost:8080/users/apiKey
时,带有以下 json 正文
{
"apiKey": "ABC",
"apiName": "TEST",
"enabled": 1
}
我在 aerospike 数据库 中的记录低于记录
有什么办法不在集合中存储 @user_key 和 @_class
吗?
最佳答案
可以通过在上下文中提供以下 bean 来禁用存储 @class
:
@Bean
@Override
public AerospikeTypeAliasAccessor aerospikeTypeAliasAccessor() {
//we do not want to save @class field with type of document into Aerospike
return new AerospikeTypeAliasAccessor(null);
}
请注意,禁用保存类型信息将导致无法读取具有通用数据类型的文档。
关于java - Spring aerospike 数据 - 如何从集合中删除 @user_key 和 @_class 箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68292496/