[SPRING] 의존성에 대한 [org.springframework.social.twitter.api.Twitter] 유형의 적격 빈이 없음
SPRING의존성에 대한 [org.springframework.social.twitter.api.Twitter] 유형의 적격 빈이 없음
스프링 부트 애플리케이션에서 트위터 oAuth 지원을 구현하려고합니다. 이 예제 다음 http://spring.io/guides/gs/accessing-twitter/ 내 응용 프로그램에 트위터 액세스를 성공적으로 추가 했으므로 이제 다음과 같은 작업을 수행했습니다.
HomeController :
@Controller
@RequestMapping("/")
public class HelloController {
private Twitter twitter;
private ConnectionRepository connectionRepository;
@Inject
public HelloController(Twitter twitter, ConnectionRepository connectionRepository) {
this.twitter = twitter;
this.connectionRepository = connectionRepository;
}
@RequestMapping(method=RequestMethod.GET)
public String helloTwitter(Model model) {
if (connectionRepository.findPrimaryConnection(Twitter.class) == null) {
return "redirect:/connect/twitter";
}
TwitterProfile userProfile = twitter.userOperations().getUserProfile();
model.addAttribute(userProfile);
CursoredList<TwitterProfile> friends = twitter.friendOperations().getFriends();
model.addAttribute("friends", friends);
return "hello";
}
}
신청 종류 :
@PropertySources({ @PropertySource(value = "classpath:application.properties") })
@ComponentScan("com.example")
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
지금까지 모든 것이 잘 작동합니다. 나는 문제없이 응용 프로그램을 시작할 수 있습니다.
또한 통합 테스트가 많이 있습니다. 예를 들면 다음과 같습니다.
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@SpringApplicationConfiguration(classes = Application.class)
@IntegrationTest("server.port: 0")
public class SearchControllerTest {
@Value("${local.server.port}")
protected int port;
@Test
public void testSearchResultsWithDefaultPageAndSize() {
// @formatter:off
given()
.when()
.get(format("http://localhost:%d/api/v1.0/search/%s", port, "RDBMa mosyl"))
.then()
.statusCode(200)
.contentType(ContentType.JSON)
.body("totalCount", equalTo(4))
.body("entries.size", equalTo(4));
// @formatter:on
}
....
}
이제 트위터 소셜 기능을 추가 한 후에 예외를 제외하고 모든 테스트가 실패했습니다.
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.social.twitter.api.Twitter] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:813)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
... 43 common frames omitted
왜 이것이 응용 프로그램에서 작동하고 테스트에서 실패합니까? 테스트 구성의 문제점은 무엇입니까?
해결법
-
==============================
1.그 이유는 src / main / resources / application.properties 또는 config / application.properties가 없기 때문에 spring.social.twitter.appId 및 spring.social.twitter.appSecret을 정의하기 때문입니다.
그 이유는 src / main / resources / application.properties 또는 config / application.properties가 없기 때문에 spring.social.twitter.appId 및 spring.social.twitter.appSecret을 정의하기 때문입니다.
from https://stackoverflow.com/questions/29512365/no-qualifying-bean-of-type-org-springframework-social-twitter-api-twitter-foun by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 트랜잭션 관리자 (주석 스타일) 런타임 오류 (0) | 2019.05.25 |
---|---|
[SPRING] Spring @PostFilter는 언제 실행됩니까? (0) | 2019.05.25 |
[SPRING] @Qualifier의 SpEL은 같은 bean을 참조합니다. (0) | 2019.05.25 |
[SPRING] 스프링 보안 : 폼 로그인 특수 문자 (0) | 2019.05.25 |
[SPRING] 스프링 소셜 페이스 북에 앱 액세스 토큰을 사용하여 공개 페이지를 쿼리 (0) | 2019.05.25 |