2

Я начинаю с 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"; 
    } 

} 

ответ

7

После изучения истории мерзавца исходного кода для артефакта spring-social-facebook, который я получил от GitHub, я не нашел никаких следов ConnectionRepository.

После проверки его на mvnrepository.com я понял, что при использовании версии 2.0.3.RELEASE артефакта весны-социально-facebook как зависимость намного больше баночки-файлы, в которых dowloaded по Maven, чем это был при использовании версии 3.0.0.M1 как зависимость. Среди недостающих jar-filer были два артефакта, которые мне нужно было запустить и запустить приложение. Это были spring-social-core и spring-social-config.

В конце концов я нашел ConnectionRepository в весенне-социально-основной банку-файл.

Так что я в конце концов, нужно было сделать, чтобы изменить зависимости в исходном ПОМ-файл из руководства, которые были следующие:

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.social</groupId> 
     <artifactId>spring-social-facebook</artifactId> 
    </dependency> 
</dependencies> 

к:

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.social</groupId> 
     <artifactId>spring-social-facebook</artifactId> 
     <version>3.0.0.M1</version> 
     </dependency> 
    <dependency> 
     <groupId>org.springframework.social</groupId> 
     <artifactId>spring-social-core</artifactId> 
     <version>2.0.0.M2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.social</groupId> 
     <artifactId>spring-social-config</artifactId> 
     <version>2.0.0.M2</version> 
    </dependency> 
</dependencies> 

Эти изменения позволили мне запустить приложение и получить некоторые данные в facebook.

+0

Очень поучительный. Я узнал, что 3.0.0.M1 находится в хранилище Spring Вехи, поэтому пришлось добавить, что мой первый П: '<репозитории> Spring Вехи Repository http://repo.spring.io/milestone/ ' – acdhirr

Смежные вопросы