我有什么方法可以在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提供的)给出了一个白色标签。
答案 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()。由于它可以实现组件扫描,因此也可以发现和使用其他配置类。
当然,也许我误解了你想要做的事情。如果是这样,那么请重申你想要完成的事情,我会尽力帮助。