在这个示例中,spring-boot如何理解不要创建一个以上的bean?

时间:2019-05-13 08:12:27

标签: java spring-boot configuration spring-bean

请考虑:

项目A

Map<String,Integer> dayValues = new HashMap<>();
dayValues.put("Monday",1);
...
dayValues.put("Sunday",7);
Comparator<String> cmpDays = Comparator.comparing(dayValues::get);
...
Map<String, Collection<UserHistoryDto>> map = new TreeMap<>(cmpDays);

项目B

com.mycompany
 - SpringBootApp.java

@SpringBootApplication
@Import(MyConf.class)
public class SpringBootApp {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootApp.class, args);
    }

}

其中com.mycompany.projectB - MyConf.java com.mycompany.projectB.beans - Bean1.java - Bean2.java Bean1.javaBean2.java注释的类。 并且@Component具有内容:

Context.java

由于以下原因,现在Bean1和Bean2有资格成为应用程序上下文的一部分:

  1. @Configuration @ComponentScan public class MyConf { } 是在较高的路径层次结构级别定义的
  2. SpringBootApp.java是在较高的路径层次结构级别定义的,将是  由于第1点而自动导入到ProjectA
  3. 我明确地从projectA MyConf.java
  4. 导入了项目B的上下文

我的问题是:
Spring Boot如何理解我真正想要的只是该类的一个实例 以及如何避免引发诸如重复bean定义之类的异常?
感谢您的宝贵时间。

0 个答案:

没有答案