O que aconteceu com a classe org.springframework.social.connect.ConnectionRepository no Spring Social 3.0.0.M1?
Sou iniciante no Spring Framework e queria experimentar o Spring Social para criar um aplicativo Web simples que recupera dados do Facebook. Para isso, segui o funcionário do Spring Socials "Guia de Introdução" chamado "Acessando dados do Facebook"
O primeiro problema que encontrei foi que a versão Spring Social2.0.3.RELEASE, que parece ser a versão oficial mais recente do Spring Social, não suporta a versão 2.8 da API do facebook (e, portanto, gera o seguinte erro: "(# 12) o campo bio foi descontinuado para as versões v2.8 e superior"). Como eu criei o aplicativo do Facebook em developers.facebook.com ontem, parece que não tenho acesso às versões anteriores da API.
Eu procurei no google por uma solução e encontrei essa versão3.0.0.M1 parece estar disponível no repositório maven, que deveria corrigir esse problema. Mas quando mudei a configuração no meu arquivo .pom para usar esta versão, o compilador não conseguiu encontrar a classeConnectionRepository não mais. Na verdade, todo o pacoteorg.springframework.social.connect parece estar faltando.
O código que copiei do guia (https://spring.io/guides/gs/accessing-facebook/) tem a seguinte aparência:
import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.facebook.api.Facebook;
import org.springframework.social.facebook.api.PagedList;
import org.springframework.social.facebook.api.Post;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
impor,t org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/")
public class HelloController {
private Facebook facebook;
private ConnectionRepository connectionRepository;
public HelloController(Facebook facebook, ConnectionRepository connectionRepository) {
this.facebook = facebook;
this.connectionRepository = connectionRepository;
}
@GetMapping
public String helloFacebook(Model model) {
if (connectionRepository.findPrimaryConnection(Facebook.class) == null) {
return "redirect:/connect/facebook";
}
model.addAttribute("facebookProfile", facebook.userOperations().getUserProfile());
PagedList<Post> feed = facebook.feedOperations().getFeed();
model.addAttribute("feed", feed);
return "hello";
}
}
O ConnectionRepository foi preterido e agora removido? Se for esse o caso, devo usar outra coisa? Ou eu estou esquecendo de alguma coisa?
A remoção de todas as referências ao ConnectionRepository gera o seguinte erro ao iniciar o aplicativo:
org.springframework.beans.factory.BeanCreationException: Erro ao criar o bean com o nome 'helloController': a resolução dos construtores declarados no bean Class [hello.HelloController] do ClassLoader [sun.misc.Launcher$AppClassLoader@73d16e93] falhou; A exceção aninhada é java.lang.NoClassDefFoundError: org / springframework / social / ApiBinding
Nesse caso, o código tem a seguinte aparência:
package hello;
import org.springframework.social.facebook.api.Facebook;
import org.springframework.social.facebook.api.PagedList;
import org.springframework.social.facebook.api.Post;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/")
public class HelloController {
private Facebook facebook;
public HelloController(Facebook facebook) {
this.facebook = facebook;
}
@GetMapping
public String helloFacebook(Model model) {
model.addAttribute("facebookProfile", facebook.userOperations().getUserProfile());
PagedList<Post> feed = facebook.feedOperations().getFeed();
model.addAttribute("feed", feed);
return "hello";
}
}