Конфигурация Spring XD Java не загружает ресурс xml

Я использую Spring XD для создания потокового twittersearch, затем подключаюсь к моему процессору твитов, а затем подключаюсь к журналу.

Я использовал класс конфигурации Java без проблем, затем я хотел добавить applicationContext.xml в свой класс ModuleConfiguration, используя @ImportResource

@Configuration
@ImportResource("config/applicationContext.xml")
@EnableIntegration
public class ModuleConfiguration {

    @Bean
    MessageChannel input() {
        return new DirectChannel();
    }

    @Bean
    MessageChannel output() {
        return new DirectChannel();
    }

    @Autowired
    TweetProcessor tweetProcessor;

    @Bean
    freemarker.template.Configuration configuration() {
        return new freemarker.template.Configuration(freemarker.template.Configuration.VERSION
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>file:/apps/conf/application.properties</value>
            </list>
        </property>
    </bean>

</beans>
3_23); } }

И содержимое applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>file:/apps/conf/application.properties</value>
            </list>
        </property>
    </bean>

</beans>

И мое определение потока: stream create --name JustCreate --definition "twittersearch --query=Java | tweet-processor | log" --deploy

Когда поток развернулся, я получил ошибку:

2015-10-21T11:26:26+0800 1.2.1.RELEASE WARN twitterSource-1-1 twitter.TwitterSearchChannelAdapter - Exception while reading stream.
org.springframework.messaging.MessageDeliveryException: Dispatcher has no subscribers for channel 'singlenode:default,admin,singlenode,hsqldbServer:9393.JustCreate.0'.; nested exception is org.springframework.integration.MessageDispatchingException: Dispatcher has no subscribers

Я также пробовал использовать подход spring-module.xml (вообще не используя конфигурацию Java), и этот подход работает.

Но мне просто любопытно, не поддерживает ли конфигурация Spring XD Java аннотацию @ImportResource.

Спасибо.


person nanokernel    schedule 21.10.2015    source источник


Ответы (1)


Spring XD создает контекст приложения обычным способом из класса XML или @Configuration, как только он находит и разрешает ресурсы конфигурации. XD ищет в каталоге config. Если он найдет файл .xml или или .groovy, он будет использовать этот файл для создания контекста приложения. Если нет, он будет искать файл .properties и свойство base_packages для сканирования классов @Configuration. Поскольку у вас есть файл XML в каталоге конфигурации, @Configuration игнорируется. Чтобы импортировать ресурсы, поместите их по другому пути. Это может быть подкаталог config или другой каталог верхнего уровня. Это подробно обсуждается в разделе Modules XD. справочное руководство.

person dturanski    schedule 21.10.2015
comment
Поскольку ваш XML добавляет только PPC; вместо этого вы можете использовать @PropertySource - см. ответ на этот вопрос для примера. - person Gary Russell; 21.10.2015