Я начинаю с Spring Framework и хотел попробовать Spring Social, чтобы создать простую веб-приложение, которая извлекает данные из Facebook. Для этого я последовал за Spring Socials официальным "Руководство по началу работы" под названием "Доступ к данным на Facebook".Что произошло с классом org.springframework.social.connect.ConnectionRepository весной Social 3.0.0.M1?
Первая проблема, которую я столкнулся в том, что весна Социальная версия 2.0.3.RELEASE, который, кажется, последняя официальная версия Spring Social, не поддерживает версию 2.8 facebook API (и, следовательно, дает мне следующая ошибка: «(# 12) bio field устарел для версий версии 2.0 и выше»). Поскольку я создал приложение Facebook на developerWorks.com вчера, похоже, у меня нет доступа к предыдущим версиям API.
Я искал в Google решение и нашел, что версия 3.0.0.M1, похоже, доступна в репозитории maven, который должен решить эту проблему. Но когда я изменил конфигурацию в моем .pom-файле, чтобы использовать эту версию, вместо этого компилятор больше не может найти класс ConnectionRepository. На самом деле весь пакет org.springframework.social.connect, кажется, отсутствует.
код, который я скопировал из направляющей (https://spring.io/guides/gs/accessing-facebook/) выглядит followig:
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;
import 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";
}
}
Был ConnectionRepository осуждается и теперь удалены? Если это так, я должен использовать что-то другое вместо этого? Или я чего-то не хватает?
Просто удалить все ссылки на ConnectionRepository дает мне следующее сообщение об ошибке, а не при запуске приложения:
org.springframework.beans.factory.BeanCreationException: Ошибка при создании боба с именем «HelloController»: Разрешение заявленных конструкторов на бобе Класс [hello.HelloController] из ClassLoader [[email protected]] не выполнен; вложенное исключение java.lang.NoClassDefFoundError: орг/springframework/социальный/ApiBinding
В этом случае код выглядит следующим образом:
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";
}
}
Очень поучительный. Я узнал, что 3.0.0.M1 находится в хранилище Spring Вехи, поэтому пришлось добавить, что мой первый П: '<репозитории> Spring Вехи Repository http://repo.spring.io/milestone/ repositories> ' –
acdhirr