No vídeo, o instrutor, ao invés de utilizar o e-mail do usuário logado, coloca seu próprio e-mail e com isso não percebeu que ocorre uma exceção do tipo NullPointerException pois não temos o usuário autenticado uma vez que para comprar um livro não é preciso estar autenticado. Seria interessante publicar uma errata com a correção deste problema.
@RequestMapping(value = "/finaliza", method = RequestMethod.POST)
public Callable<ModelAndView> finaliza(@AuthenticationPrincipal Usuario usuario, RedirectAttributes model) {
enviaEmailCompraProduto(usuario);
}
private void enviaEmailCompraProduto(Usuario usuario) {
email.setTo(usuario.getEmail());
}
At. Winston