[SPRING] Spring Social 3.0.0.M1의 org.springframework.social.connect.ConnectionRepository 클래스는 어떻게 되었습니까?
SPRINGSpring Social 3.0.0.M1의 org.springframework.social.connect.ConnectionRepository 클래스는 어떻게 되었습니까?
저는 Spring Framework 초보자이며 Facebook에서 데이터를 가져 오는 간단한 웹 애플리케이션을 만들기 위해 Spring Social을 사용해보고 싶었습니다. 이를 위해 나는 Spring Socials의 공식 "Getting Getting Guide"인 "Facebook 데이터 액세스"를 따랐습니다.
내가 만난 첫번째 문제는 스프링 소셜의 최신 공식 버전 인 2.0.3.RELEASE는 페이스 북 API 2.8 버전을 지원하지 않기 때문에 다음과 같은 오류를 준다 : "(# 12) 바이오 필드는 버전 v2.8 이상에서는 지원되지 않습니다. "). 어제는 developers.facebook.com에서 Facebook 앱을 만들었으므로 이전 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에 대한 모든 참조를 제거하면 응용 프로그램을 시작할 때 다음 오류가 표시됩니다.
org.springframework.beans.factory.BeanCreationException : 이름이 'helloController'인 Bean을 생성하는 중 오류가 발생했습니다. ClassLoader [bean.HelloController]의 Bean 클래스 [hello.HelloController]에 선언 된 생성자가 해결되지 않았습니다. 중첩 예외는 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.GitHub에서 얻은 artifact spring-social-facebook에 대한 소스 코드의 git 히스토리를 살펴본 후에 ConnectionRepository에 대한 흔적을 전혀 찾을 수 없었다.
GitHub에서 얻은 artifact spring-social-facebook에 대한 소스 코드의 git 히스토리를 살펴본 후에 ConnectionRepository에 대한 흔적을 전혀 찾을 수 없었다.
mvnrepository.com에서 체크 아웃 한 후 버전 2.0.3.RELEASE의 artifact spring-social-facebook을 의존성으로 사용할 때 훨씬 더 많은 jar-file이 버전 3.0.0을 사용하는 것보다 Maven에 의해 dowloaded되었음을 알게되었습니다. M1은 의존성입니다. 누락 된 jar-filer 중에는 응용 프로그램을 설치하고 실행하는 데 필요한 두 개의 유물이있었습니다. 그들은 봄 - 사회 - 핵심 및 봄 - 사회 - 구성되었습니다.
결국 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>
이러한 변경으로 인해 애플리케이션을 시작하고 일부 페이스 북 데이터를 검색 할 수있었습니다.
from https://stackoverflow.com/questions/42168663/what-has-happened-with-the-class-org-springframework-social-connect-connectionre by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 추상 클래스에 정의 된 스프링 autowire 의존성 (0) | 2019.02.25 |
---|---|
[SPRING] Spring 3.0.5 - java.awt.HeadlessException - com.trend.iwss.jscan (0) | 2019.02.25 |
[SPRING] Spring 통합 - 외부 쿼리 JDBC 쿼리 (0) | 2019.02.25 |
[SPRING] MongoDB $ 배열 2 레벨 당김 (0) | 2019.02.25 |
[SPRING] mybatis가 실행 한 oracle 프로 시저에서 매개 변수를받을 수 없습니다. (0) | 2019.02.25 |