0

Есть ли способ, которым я могу использовать 2 источника в SpringApplication.run()? Вот мой основной класс. Вы можете четко понять, что я пробовал до сих пор.Spring Social: нужно запустить 2 источника в SpringApplication.run (источники, args);

@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) дает белую метку.

+0

Источники - это не более чем классы '@ Configuration'. Зачем вам нужны точки входа (основные методы) для вашего приложения. Просто настройте Twitter и Facebook в одном приложении. –

+0

Это странное поведение, ваш второй подход выглядит совершенно нормально. Чтобы быть уверенным, что у вас есть собственный источник, связанный с Twitter, отображение '/ twitter' работает чисто? –

ответ

0

На первый взгляд это похоже на вопрос, связанный с весной Boot-спецификой (это действительно так), но мне кажется, что вы хотите, чтобы ваше приложение поддерживало как Twitter, так и LinkedIn. Правильно?

Все, что вы передаете SpringApplication.run(), представляет собой набор классов конфигурации. Как правило, вы проходите только в одной конфигурации и позволяете компонентному сканированию автоматически находить другие классы @Configuration. И, хотя это не требуется, вы обычно проходите в классе конфигурации, который также имеет метод main(), который запускает его.

Итак, почему у вас есть класс приложения с основным методом, а затем еще два класса приложений, к которым у вас нет общего источника, но я предполагаю, что они по существу дублируют друг друга с помощью 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 на пример того, как я это делаю в Сессионная социальная витрина с поддержкой загрузки. Там Application.ja va переходит в SpringApplication.run(). А поскольку он позволяет выполнять компонентное сканирование, другие классы конфигурации будут также обнаружены и использованы.

Конечно, возможно, я неправильно понял, что вы пытаетесь сделать. Если да, то, пожалуйста, повторите то, что вы пытаетесь выполнить, и я постараюсь помочь.