2015-10-22 29 views
6

W mojej aplikacji do uruchamiania w czasie wiosny konfiguruję dwa różne wystąpienia MQQueueConnectionFactory (inny identyfikator), ponieważ jest to potrzebne aplikacji. Do tego dodałem słoiki klienta IBM.Wyłączanie automatycznej konfiguracji Spring JMS w Spring Boot Application

Dodałem również zależność spring-jms w moim kodzie, ponieważ chciałem klasy JmsTemplate etc. Po dodaniu tej zależności JmsAutoConfiguration znajdzie JmsTemplate w ścieżce klas i spróbuje skonfigurować komponenty bean. W tym procesie próbuje wstrzyknąć komponent bean typu ConnectionFactory i tutaj kod się nie powiedzie i zacznę otrzymywać błąd. Poniżej znajduje się kod z JmsAutoConfiguration

@Configuration 
@ConditionalOnClass(JmsTemplate.class) 
@ConditionalOnBean(ConnectionFactory.class) 
@EnableConfigurationProperties(JmsProperties.class) 
@Import(JmsAnnotationDrivenConfiguration.class) 
public class JmsAutoConfiguration { 

    @Autowired 
    private JmsProperties properties; 

    @Autowired 
    private ConnectionFactory connectionFactory; 

    @Autowired(required = false) 
    private DestinationResolver destinationResolver; 

mam siłownia aby wyłączyć JmsAutoconfiguration cechą buta wiosennej przypadkiem? Jeśli nie, jakie jest alternatywne rozwiązanie?

Odpowiedz

10

Możesz dodać konfiguracje auto, które chcesz wyłączyć, do adnotacji SpringBootApplication:

@SpringBootApplication(exclude = JmsAutoConfiguration.class) 
+1

Lub: '@EnableAutoConfiguration (wyklucza = JmsAutoConfiguration.class)' –

2

jeśli chcemy sterować go za pomocą właściwości (w tym przypadku application.yml) to można zrobić coś takiego.

spring: 
    autoconfigure: 
    exclude: org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration 
1

FYI, to wykorzystać, aby wyłączyć ActiveMQ

@SpringBootApplication(exclude = ActiveMQAutoConfiguration.class)