Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在spring boot多模块项目中,仅在子模块内使用本地bean_Spring_Gradle_Rabbitmq - Fatal编程技术网

在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,而不使用
限定符
-注释呢