本文将介绍找不到依赖项类型为[org.springframework.social.twitter.api.Twitter]的合格Bean的详细情况,特别是关于找不到依赖文件,请重新安装的相关信息。我
本文将介绍找不到依赖项类型为[org.springframework.social.twitter.api.Twitter]的合格Bean的详细情况,特别是关于找不到依赖文件,请重新安装的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于angularjs – Ionic Framework Twitter集成、Error creating bean with name ‘org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0‘、java-没有找到依赖类型为[org.springframework.social.twitter.api.Twitter]的匹配bean、NoSuchBeanDefinitionException:未找到依赖项类型为[Repository]的合格Bean:至少应有1个符合自动装配条件的Bean的知识。
本文目录一览:- 找不到依赖项类型为[org.springframework.social.twitter.api.Twitter]的合格Bean(找不到依赖文件,请重新安装)
- angularjs – Ionic Framework Twitter集成
- Error creating bean with name ‘org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0‘
- java-没有找到依赖类型为[org.springframework.social.twitter.api.Twitter]的匹配bean
- NoSuchBeanDefinitionException:未找到依赖项类型为[Repository]的合格Bean:至少应有1个符合自动装配条件的Bean
找不到依赖项类型为[org.springframework.social.twitter.api.Twitter]的合格Bean(找不到依赖文件,请重新安装)
在我的Spring Boot应用程序中,我正在尝试实现Twitter
oAuth支持。按照以下示例http://spring.io/guides/gs/accessing-
twitter/我已经成功将Twitter访问权限添加到了我的应用程序中,所以现在我有了:
家用控制器:
@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")@SpringBootApplicationpublic 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 }....}
现在,在添加了Twitter社交功能之后,我的所有测试均失败,但出现以下异常:
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
为什么这对Application起作用,而对测试却失败?我的测试配置有什么问题?
答案1
小编典典原因是您没有定义spring.social.twitter.appId
和的src / main / resources /
application.properties或config / application.propertiesspring.social.twitter.appSecret
。
angularjs – Ionic Framework Twitter集成
我正在使用离子论坛的示例程序:http://forum.ionicframework.com/t/twitter-integration-with-jsoauth/3936
可在bitbucket获得:https://bitbucket.org/aaronksaunders/ionic.twitter.sample
我已经用两种方式对它进行了测试,即使用离子服务和模拟器,但结果相同:每当我点击登录时,新的浏览器窗口都有地址:https://api.twitter.com/oauth/authorize?出现包含以下错误消息.
Whoa there! There is no request token for this page. That's the special key we need from applications asking to use your Twitter account. Please go back to the site or application that sent you here and try again; it was probably just a mistake.
我已将twitter API密钥和API密钥放在适当的位置.
解决方法
这是一个很棒的图书馆,可以为您处理社交媒体令牌.
示例初始化:
hello.init({ facebook : '12345678912345' },{ // Define the OAuth2 return URL redirect_uri : 'http://adodson.com/hello.js/redirect.html' });
登录:
hello( "facebook" ).login().then( function(){ alert("You are signed in to Facebook"); },function( e ){ alert("Signin error: " + e.error.message ); });
登录后,您可以拨打您选择的社交媒体帐户.
Error creating bean with name ‘org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0‘
解决方案:
请在 pom.xml 添加 依赖包
<dependency>
<groupId>org.aspectj</groupId >
<artifactId>aspectjweaver</artifactId >
<version>1.6.11</version >
</dependency>
java-没有找到依赖类型为[org.springframework.social.twitter.api.Twitter]的匹配bean
我正在使用Spring Social连接到Twitter.
连接部分工作正常,但是当我尝试获取朋友列表时,出现以下错误:
Caused by: org.springframework.beans.factory.NoSuchBeanDeFinitionException: No matching 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: {}
我的控制器课程:
@Controller
@RequestMapping("/social")
public class SocialController {
private final Twitter twitter;
@Inject
public SocialController(Twitter twitter) {
this.twitter = twitter;
}
@RequestMapping(value="/twitter/friends",method=RequestMethod.GET)
public String friends(Model model) {
model.addAttribute("profiles",twitter.friendOperations().getFriends());
return "twitter/friends";
}
}
我的XML配置如下:(仅显示相关部分)
<!-- Spring Social -->
<bean id="connectionFactoryLocator"https://www.jb51.cc/tag/so/" target="_blank">.social.connect.support.ConnectionFactoryRegistry">
<property name="connectionFactories">
<list>
<beanhttps://www.jb51.cc/tag/so/" target="_blank">.social.twitter.connect.TwitterConnectionFactory">
<constructor-arg value="${twitter.consumerKey}" />
<constructor-arg value="${twitter.consumerSecret}" />
</bean>
<beanhttps://www.jb51.cc/tag/so/" target="_blank">.social.facebook.connect.FacebookConnectionFactory">
<constructor-arg value="${facebook.clientId}" />
<constructor-arg value="${facebook.clientSecret}" />
</bean>
</list>
</property>
</bean>
<bean id="textEncryptor"https://www.jb51.cc/tag/ecurity/" target="_blank">ecurity.crypto.encrypt.Encryptors"
factory-method="noOpText" />
<bean id="usersConnectionRepository"https://www.jb51.cc/tag/so/" target="_blank">.social.connect.jdbc.JdbcUsersConnectionRepository">
<constructor-arg ref="jpaDataSource" />
<constructor-arg ref="connectionFactoryLocator" />
<constructor-arg ref="textEncryptor" />
</bean>
<bean id="connectionRepository" factory-method="createConnectionRepository"
factory-bean="usersConnectionRepository" scope="request">
<constructor-arg value="#{request.userPrincipal.name}" />
<aop:scoped-proxy proxy-target-/>
</bean>
<beanhttps://www.jb51.cc/tag/so/" target="_blank">.social.connect.web.ConnectController">
<!-- relies on by-type autowiring for the constructor-args -->
<property name="applicationUrl" value="${application.url}" />
</bean>
<!-- Spring Social -->
请指导.我会非常感激.
编辑
我想我忘了补充
@Bean
@Scope(value="request",proxyMode=ScopedProxyMode.INTERFACES)
public Twitter twitter() {
Connection<Twitter> twitter = connectionRepository().findPrimaryConnection(Twitter.class);
return twitter != null ? twitter.getApi() : new TwitterTemplate();
}
到XML文件.任何想法如何在XML上下文中表示.我是基于注释的配置&的新手.因此使用基于xml的.请帮忙.
编辑2
我已经解决了.决定同时使用基于注释的配置和基于XML的配置.
只需添加我为所有人做的事情:
我添加了一个配置:
public class SocialApiConfig {
@Bean
@Scope(value="request",proxyMode=ScopedProxyMode.INTERFACES)
public Facebook facebook(ConnectionRepository connectionRepository) {
Connection<Facebook> facebook = connectionRepository.findPrimaryConnection(Facebook.class);
return facebook != null ? facebook.getApi() : new FacebookTemplate();
}
@Bean
@Scope(value="request",proxyMode=ScopedProxyMode.INTERFACES)
public Twitter twitter(ConnectionRepository connectionRepository) {
Connection<Twitter> twitter = connectionRepository.findPrimaryConnection(Twitter.class);
return twitter != null ? twitter.getApi() : new TwitterTemplate();
}
}
然后将其包含在基于XML的配置中
<beanhttps://www.jb51.cc/tag/fig/" target="_blank">fig.socialApiConfig" />
感谢大家的指导,以得到正确的答案!非常感谢.你们好棒!
从spring documentation开始,我可以看到您需要以某种方式实例化Twitter.
尝试声明一个bean< bean id =“ twitter” factory-bean =“ twitterConnectionFactory” />具有实例化TwitterTemplate对象所需的正确参数
编辑:
这是通过xml进行的配置:
<bean id="twitter" factory-method="findPrimaryConnection"
factory-bean="connectionRepository" scope="request" depends-on="connectionRepository">
<constructor-arg value="org.springframework.social.twitter.api.Twitter" />
</bean>
参见this ohter – possible dupe – question
NoSuchBeanDefinitionException:未找到依赖项类型为[Repository]的合格Bean:至少应有1个符合自动装配条件的Bean
我发现类似的问题解释了许多Web门户。但是我想这是独特的情况。我在Spring MVC应用程序中遇到错误。
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'testController' defined in file [C:\Program Files (x86)\sts-bundle\pivotal-tc-server-developer-3.1.2.RELEASE\base-instance\wtpwebapps\ExpT1\WEB-INF\classes\com\expt\controller\TestController.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [com.expt.repositories.CategoryRepository]: No qualifying bean of type [com.expt.repositories.CategoryRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.expt.repositories.CategoryRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:185)
.....
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.expt.repositories.CategoryRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373)
代码如下。我认为已经复制了足够的代码。请帮助我了解缺少的内容以及如何解决此问题。任何帮助将是巨大的…!代码:Appitiializer:
package com.expt.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class AppInitialzer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return new Class[]{SpringAppContInit.class,SQLDevDataSource.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return new Class[]{WebMvcConfig.class};
}
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[]{"/"};
}
}
SQLDEVConfig:
package com.expt.config;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@Configuration
@Profile("SQLDev")
@EnableJpaRepositories(basePackages={"com.expt.repositories"})
public class SQLDevDataSource extends AbstractJpaConfig {
@Override
public DataSource getDataSource() {
// TODO Auto-generated method stub
return createBasicDataSource("jdbc:jtds:sqlserver://LOCAL:1433/MYDB;","net.sourceforge.jtds.jdbc.Driver","UNMA","PWD123");
}
public BasicDataSource createBasicDataSource(String jdbcUrl,String driverClass,String userName,String password) {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUrl(jdbcUrl);
dataSource.setDriverClassName(driverClass);
dataSource.setUsername(userName);
dataSource.setPassword(password);
return dataSource;
}
}
SpringAPpContInit:
package com.expt.config;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
public class SpringAppContInit implements ApplicationContextInitializer<AnnotationConfigWebApplicationContext> {
@Override
public void initialize(AnnotationConfigWebApplicationContext applicationContext) {
// TODO Auto-generated method stub
ConfigurableEnvironment configEnv = applicationContext.getEnvironment();
configEnv.addActiveProfile("SQLDev");
}
}
AbstrackJpaConfig:
package com.expt.config;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.spi.PersistenceProvider;
import javax.sql.DataSource;
import org.hibernate.dialect.SQLServer2008Dialect;
import org.hibernate.jpa.HibernatePersistenceProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.orm.jpa.JpaDialect;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
import com.expt.domain.Category;
public abstract class AbstractJpaConfig {
public abstract DataSource getDataSource();
@Bean(name="entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource){
Map<String,String> properties = new HashMap<String,String>();
properties.put(org.hibernate.cfg.Environment.HBM2DDL_AUTO,"validate");
properties.put(org.hibernate.cfg.Environment.DIALECT,SQLServer2008Dialect.class.getName());
properties.put(org.hibernate.cfg.Environment.SHOW_SQL,"true");
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
//em.setPackagesToScan(Expense.class.getPackage().getName());
em.setPackagesToScan(Category.class.getPackage().getName());
//em.setPersistenceProvider(new HibernatePersistenceProvider());
em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
em.setJpaPropertyMap(properties);
return em;
}
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
控制器:
package com.expt.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.expt.domain.Category;
import com.expt.repositories.CategoryRepository;
@RestController
@RequestMapping("/test")
public class TestController {
CategoryRepository catRepo;
@Autowired
public TestController(CategoryRepository catRepo) {
this.catRepo = catRepo;
}
/*private CategoryService catSvc;
@Autowired
public TestController(CategoryService catSvc) {
this.catSvc = catSvc;
}*/
@RequestMapping("/simple")
public String test(){
return "testing";
}
@RequestMapping("/json")
public Iterable<Category> testJ(){
return catRepo.findAll();
}
}
CategoryRepository:
package com.expt.repositories;
import java.math.BigDecimal;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.expt.domain.Category;
@Repository
public interface CategoryRepository extends JpaRepository<Category,BigDecimal> {
}
================================================== =======
编辑:(由于有很多评论添加到此,因此也想添加这些详细信息)
我指的是https://github.com/scottfrederick/spring-
music。哪个public class
AppInitializer implements WebApplicationInitializer
用于appinitializer。
完整代码在这里,这是我在旧项目中使用的代码。这确实手动注册了配置类,并且可以正常工作。但是当我们从扩展时并不需要AbstractAnnotationConfigDispatcherServletInitializer
。
public class AppInitializer implements WebApplicationInitializer{
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
// TODO Auto-generated method stub
configureAppContextInitializers(servletContext,SpringAppContInit.class.getName());
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(RepositoryConfig.class);
servletContext.addListener(new ContextLoaderListener(rootContext));
AnnotationConfigWebApplicationContext webContext = new AnnotationConfigWebApplicationContext();
webContext.register(WebMvcConfig.class);
DispatcherServlet dispatcherServlet = new DispatcherServlet(webContext);
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher",dispatcherServlet);
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
private void configureAppContextInitializers(ServletContext container,String... initClassNames) {
String initializerClasses = container.getInitParameter(ContextLoader.CONTEXT_INITIALIZER_CLASSES_PARAM);
String delimitedClassNames = StringUtils.arrayToDelimitedString(initClassNames," ");
if (StringUtils.hasText(initializerClasses)) {
initializerClasses += " " + delimitedClassNames;
}
else {
initializerClasses = delimitedClassNames;
}
container.setInitParameter(ContextLoader.CONTEXT_INITIALIZER_CLASSES_PARAM,initializerClasses);
}
}
在情况下AbstractAnnotationConfigDispatcherServletInitializer
,方法getRootConfigClasses
和getServletConfigClasses
做implicitly.Now我找我为什么上面的代码是不工作的原因登记。我有解决方法,例如可以通过恢复为XML或使其工作WebApplicationInitializer
。我正在寻找解决方案和原因,如果可能的话,使用更新的代码而不是API文档。我需要一个教程。API文档不会帮助我解决问题。
关于找不到依赖项类型为[org.springframework.social.twitter.api.Twitter]的合格Bean和找不到依赖文件,请重新安装的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于angularjs – Ionic Framework Twitter集成、Error creating bean with name ‘org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0‘、java-没有找到依赖类型为[org.springframework.social.twitter.api.Twitter]的匹配bean、NoSuchBeanDefinitionException:未找到依赖项类型为[Repository]的合格Bean:至少应有1个符合自动装配条件的Bean的相关知识,请在本站寻找。
本文标签: