Spring integration 如何从导入的maven依赖项加载Springbean而不导入context.xml

Spring integration 如何从导入的maven依赖项加载Springbean而不导入context.xml,spring-integration,Spring Integration,我想在启动时加载Springbean,它存在于导入的maven依赖项中。有没有一种方法可以做到这一点,而不用从注入的依赖项jar中实际导入context.xml 我尝试了@EnableAutoConfiguration,但没有成功。M-M-M。别无选择。如果不告诉Spring应用程序这样做,它将不会在Spring应用程序上下文中显示任何内容 如果您的依赖项只有context.xml,那么除非@Import,否则没有什么神奇的 @EnableAutoConfiguration仅适用于注册了org.

我想在启动时加载Springbean,它存在于导入的maven依赖项中。有没有一种方法可以做到这一点,而不用从注入的依赖项jar中实际导入context.xml


我尝试了@EnableAutoConfiguration,但没有成功。

M-M-M。别无选择。如果不告诉Spring应用程序这样做,它将不会在Spring应用程序上下文中显示任何内容

如果您的依赖项只有
context.xml
,那么除非
@Import
,否则没有什么神奇的

@EnableAutoConfiguration
仅适用于注册了
org.springframework.boot.autoconfigure.EnableAutoConfiguration
的用户

请参见
spring引导自动配置/META-INFO
中的
spring.factories

右图:阅读更多Spring引导文档

因此,如果您不想
@Import
,可以使用该
@Import
编写一些
@Configuration
(例如
MyAutoConfiguration
),并将
spring.factories
添加到您的任意jar中,内容如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.my.proj.autoconfigure.MyAutoConfiguration

您可以在应用程序中创建bean并扩展要加载的bean

示例(我使用它将rabbitmq绑定定义外部化):

外部:

package com.bpedroso.rabbitmq.beans;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CustomerMQBinding {

@Bean
public Queue myQueue() { ... }

@Bean
public Queue myDlq() { ... }

@Bean
public DirectExchange myExchange() { ... }

@Bean
FanoutExchange myDlx() { ... }

/*
 * Bindings
 */
@Bean
Binding bindingMyrQueue(final Queue myQueue, final DirectExchange myExchange) { ... }

@Bean
Binding bindingMyDlq(final Queue myDlq, final FanoutExchange myDlx) { ... }
}
当前项目:

import org.springframework.context.annotation.Configuration;
import com.bpedroso.rabbitmq.beans.CustomerMQBinding;;

@Configuration
public class MyCustomerBindingMQBeans extends CustomerMQBinding {
}

我在maven项目a中有一个@Configuration bean,我在其中定义了xxx bean。???然后呢?我所指出的其他方面怎么样?很抱歉,但这条评论毫无用处,而且添加的噪音比帮助还多。我在maven项目a中已经有一个@Configuration类,我在其中定义了xxxbean。现在,我将maven项目A作为maven依赖项包含在另一个maven项目B中。是否有一种方法可以引用maven项目A的XXX bean,而无需在web中显式导入@Configuration类。xmlI不确定为什么您也会发现我的答案与此评论无关。。。或者使用
@Import
或通过
spring.factories
,如果您基于spring引导。我添加了spring.factories org.springframework.boot.autoconfigure.enableautoconfigure键值对,但它仍然抛出错误NoSuchBeanDefinitionException。