Spring Social: необходимо запустить 2 источника в SpringApplication.run(sources, args);
Есть ли способ я могу 2 источника в SpringApplication.run()? Вот мой основной класс. Вы можете ясно понять, что я пробовал до сих пор.
@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 работает нормально, твиттер нет. Отображение '/twitter' (которое я дал для TwitterController) дает белую метку.
1 ответ
На первый взгляд, это выглядит как вопрос, специфичный для Spring Boot (который действительно есть), но мне кажется, что вы хотите, чтобы ваше приложение поддерживало как Twitter, так и LinkedIn. Правильно?
Все, что вы передаете в SpringApplication.run() - это набор классов конфигурации. Обычно вы передаете только одну конфигурацию и позволяете компонентному сканированию автоматически находить другие классы @Configuration. И, хотя это не обязательно, вы, как правило, передаете класс конфигурации, который также имеет метод 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 для примера того, как я это делаю в Spring Social Showcase с включенной загрузкой. Там Application.java переходит в SpringApplication.run(). А поскольку он позволяет сканирование компонентов, другие классы конфигурации также будут обнаружены и использованы.
Конечно, может быть, я неправильно понял, что вы пытаетесь сделать. Если так, то, пожалуйста, повторите то, что вы пытаетесь достичь, и я постараюсь помочь.