当前位置: 首页 > 知识库问答 >
问题:

班级组织发生了什么。springframework。社会的连接SpringSocial3.0.0中的ConnectionRepository。M1?

松俊美
2023-03-14

我是Spring框架的初学者,想尝试Spring Social,制作一个简单的网络应用程序,从Facebook检索数据。为此,我遵循了Spring社交官方的“入门指南”,名为“访问脸书数据”。

我遇到的第一个问题是Spring社交版2.0.3。该版本似乎是Spring Social的最新官方版本,不支持facebook API的2.8版(因此给了我以下错误:(#12)bio field不推荐用于v2.8及更高版本)。因为我已经在开发者那里创建了Facebook应用程序。脸谱网。com昨天,我似乎无法访问以前的API版本。

我用谷歌搜索了一个解决方案,找到了3.0.0版本。M1似乎在maven存储库中可用,它应该可以解决这个问题。但是当我在. pom文件中更改配置以使用此版本时,编译器再也找不到类ConnectionRepository了。事实上,整个org.springframework.social.connect似乎都不见了。

我从指南中复制的代码(https://spring.io/guides/gs/accessing-facebook/)如下所示:

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的所有引用会给我带来以下错误:

组织。springframework。豆。工厂BeanCreationException:创建名为“helloController”的bean时出错:从类加载器[sun.misc.Launcher]解析bean类[hello.helloController]上声明的构造函数$AppClassLoader@73d16e93]失败;嵌套的异常是java。lang.NoClassDefFoundError:org/springframework/social/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";
    }

}

共有1个答案

司徒啸
2023-03-14

在查看了我从GitHub获得的工件sping-Social al-facebook源代码的git历史后,我根本找不到ConnectionRepository的任何痕迹。

在mvnrepository查看后。com我在使用2.0.3版时意识到了这一点。作为依赖项发布的工件spring social facebook由Maven加载的jar文件比使用版本3.0.0时多得多。M1作为依赖项。缺少的jar文件管理器中有两个工件,我需要它们来启动和运行我的应用程序。它们是spring的社会核心和spring的社会形态。

最后,我在spring social core jar文件中找到了ConnectionRepository。

因此,我最终需要做的是更改指南中原始pom文件中的依赖项,如下所示:

<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数据。

 类似资料:
  • 我使用hibernate-4.1.2和spring-framework-4.1.6中的所有jar文件来尝试hibernateTemplate问题中指定的项目。我正面临一个组织。springframework。刀。InvalidDataAccessApiUsageException 上面提到的错误堆栈建议将会话的刷新模式设置为COMMIT/AUTO或从事务定义中删除“readOnly”标记。有没有办

  • 问题内容: 如果我将Class声明为字段: Eclipse给我警告: 类是原始类型。对泛型类型Class的引用应参数化 在实践中这意味着什么?我为什么要这样做呢?如果我要求Eclipse提供“快速修复”,它将给我: 这似乎并没有增加太多价值,但不再发出警告。 编辑:为什么类通用?您能否举一个参数化的例子,即可以有效使用除以外的东西吗? 编辑:哇!我还没有意识到这一点。我也看过Java拼图游戏,这肯

  • 通用方法 (以下)管制员工作正常 另一个跟上面一样的控制器,但给出了一个例外 例外是 例外组织。springframework。刀。InvalidDataAccessApiUsageException:对象引用未保存的临时实例-在刷新之前保存临时实例:com。软的企业资源计划赞成的意见。模型ProPurchaseOrderModel;嵌套的异常是org。冬眠TransientObjectExcep

  • 嗨,一个星期以来,我一直在追踪我的办公代码中的一个错误。它与Spring、Hibernate和Transaction有关。 我所知道的: 1.延迟加载。 2. Spring如何使用代理和拦截器进行事务管理。 3. Spring中的事务传播,我们的代码使用默认的REQUIRED。 4.每个请求/会话的会话和Hibernate的分离实体基础来保持会话,以及我们的会话不是每个会话的事实。 我的场景:我的

  • 社区组织 任何一个成功的开源项目,都离不开一个健康繁荣的社区。 图 1.11.2.1 - Hyperledger 社区组织结构 社区目前主要是三驾马车领导的结构: Technical Steering Committee (技术委员会):负责技术相关的工作,下设多个工作组,具体带动各个项目的发展; Governing Board (管理董事会):负责社区组织的整体决策,由 Hyperledger

  • 问题内容: 我一直在我的项目中使用它,而在JDK 6u17中我对此没有任何问题。现在,我刚刚更新为6u18,我发现它已被替换为。但是,如果导入此类并尝试编译我的类,则会收到错误消息: 我可以通过NetBeans代码完成功能访问此程序包,而NetBeans不会突出显示错误代码。 任何帮助,将不胜感激! 问题答案: 我不认为该类可以替代,该类已经存在很长时间了,根本 就不适合您使用 (因此包装)。 这