Spring Social:需要在SpringApplication.run中运行2个源代码(sources,args);

时间:2014-10-16 04:48:59

标签: java spring spring-social spring-social-linkedin spring-social-twitter

我有什么方法可以在SpringApplication.run()中找到2个来源? 这是我的主要课程。你可以清楚地了解我到目前为止所尝试的内容。

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {

    /*
     * SPRING BOOTSTRAP MAIN
     */
    public static void main(String[] args) {
//        SpringApplication.run(com.twitter.Application.class, args);
//        SpringApplication.run(com.linkedin.Application.class, args);
        Object[] sources = new Object[2];
        sources[0] = com.twitter.Application.class;
        sources[1] = com.linkedin.Application.class;
        SpringApplication.run(sources, args);
    }

}

如果我跑..

SpringApplication.run(com.twitter.Application.class, args);
SpringApplication.run(com.linkedin.Application.class, args);

com.linkedin.Application.class发出错误,因为地址已被使用。

如果我跑...

sources[0] = com.twitter.Application.class;
sources[1] = com.linkedin.Application.class;
SpringApplication.run(sources, args);

Linkedin工作正常,推特不行。 ' /叽叽喳喳'映射(我为TwitterController提供的)给出了一个白色标签。

1 个答案:

答案 0 :(得分:0)

从表面上看,这看起来像是一个Spring Boot特定的问题(它确实是这样),但对我来说看起来是你希望你的应用程序同时支持Twitter和LinkedIn。正确?

所有你传入SpringApplication.run()的是一组配置类。通常,您只传入一个配置,让组件扫描自动查找其他@Configuration类。而且,虽然它不是必需的,但您通常会传入一个配置类,该类也具有将其启动的main()方法。

那么为什么你有一个带有main方法的Application类,然后是另外两个Application类(你没有共享源代码,但是我猜测它们基本上都是重复的)其他与LinkedIn和Twitter是唯一的区别。如果是这样的话,你真正想要的是配置Spring Social的配置类,用@Configuration注释(这意味着组件扫描可以捡起它),并且可以命名任何你想要的东西。没有必要将它传递给SpringApplication.run()。相反,你只需将那个主Application.class传递给Spring Application.run()。

https://github.com/spring-projects/spring-social-samples/blob/master/spring-social-showcase-boot/src/main/java/org/springframework/social/showcase/config/Application.java中查看我在启用Boot的Spring社交展示中如何做到这一点的示例。在那里,Application.java将自己传递给SpringApplication.run()。由于它可以实现组件扫描,因此也可以发现和使用其他配置类。

当然,也许我误解了你想要做的事情。如果是这样,那么请重申你想要完成的事情,我会尽力帮助。