在spring boot多模块项目中,仅在子模块内使用本地bean
我用两个子模块创建了在spring boot多模块项目中,仅在子模块内使用本地bean,spring,gradle,rabbitmq,Spring,Gradle,Rabbitmq,我用两个子模块创建了Spring boot应用程序:sumboduleEmail和submoduleSms。每个子模块都有创建bean的@Configuration文件 -root - SpringBootApplicationClass | - submoduleEmail | - QueueEmail.java | - ExchangeEmail.java | - Config.java | - submoduleTwo | - QueueSms
Spring boot
应用程序:sumboduleEmail和submoduleSms。每个子模块都有创建bean的@Configuration
文件
-root
- SpringBootApplicationClass
| - submoduleEmail
| - QueueEmail.java
| - ExchangeEmail.java
| - Config.java
| - submoduleTwo
| - QueueSms.java
| - ExchangeSms.java
| - Config.java
在每个配置文件中:
@Bean("emailQueue") or ("smsQueue")
public Queue queue() {
return new Queue(configProperties.getQueue());
}
@Bean("emailExchange") or ("smsExchange")
public DirectExchange exchange() {
return new DirectExchange(configProperties.getExchange());
}
@Bean("emailBinding") or ("smsBinding")
public Binding binding() {
return BindingBuilder
.bind(queue())
.to(exchange())
.with(configProperties.getRoutingKey());
}
由于Spring是从项目的根开始的,所以他可以看到所有子模块中的所有bean
我正在尝试将本地交换
-bean与本地电子邮件子模块中的本地队列
-bean绑定
如果不使用限定符
-注释,我希望只绑定本地子模块中的本地bean。但是SpringBoot有来自自身全局上下文的bean和另一个子模块bean,并且绑定了错误的bean。因此,我得到了错误的装订
首先解决这个问题-使用限定符注释,如示例所示
但是如何对Spring boot说他必须在本地子模块中只使用本地bean,而不使用限定符-注释呢