Spring integration 如何从导入的maven依赖项加载Springbean而不导入context.xml
我想在启动时加载Springbean,它存在于导入的maven依赖项中。有没有一种方法可以做到这一点,而不用从注入的依赖项jar中实际导入context.xmlSpring 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.
我尝试了@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。