【发布时间】:2018-09-11 14:48:37
【问题描述】:
我正在编写一个向安卓手机发送通知的反应式 API。 发送通知的过程需要从手机访问令牌代码以将消息推送给它。为此,我在服务器端创建了一个端点以从手机接收令牌。 我的问题是保存令牌,然后在上述过程中使用它。 这是 TokenController、TokenService、TokenRepository 和 Token POJO:
@RestController
@RequestMapping("/api")
public class TokenController {
@Autowired
private TokenService tokenService;
@CrossOrigin
@RequestMapping(value = "/token",
method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody ResponseEntity<?> newToken(@RequestBody Token token) {
return ResponseEntity.ok(tokenService.save(token));
}
}
//---------------------------------------------------------------
@Service
public class TokenServiceImpl implements TokenService {
@Autowired
private TokenRepository tokenRepository;
@Override
public Mono<Token> save(Token token) {
return tokenRepository.save(token);
}
}
//---------------------------------------------------------------
@Repository
public interface TokenRepository extends ReactiveCrudRepository<Token, Long> { }
//---------------------------------------------------------------
@Data
@Document(collection = "token")
public class Token {
@Id
private Long _id;
private Long clientCode;
private String tokenKey; // VALUE THAT IS NEEDED ON NOTIFICATION
}
为了发送通知,我有一个需要访问数据库并查找令牌的通知控制器。阅读反应式方法我无法理解如何在通知服务中使用 TokenRepository 读取 dababase,并使用类似“findById”的方法来检索令牌。如何使用返回的 Mono 对象并获取属性“tokenKey”?
【问题讨论】:
标签: spring mongodb reactive-programming spring-webflux