为配置文件指定autowire候选的最佳方法

时间:2018-03-08 15:38:32

标签: java spring spring-boot autowired component-scan

在我的一些接口的spring boot应用程序中,我有几个实现(通常是"主要实现"以及"本地测试的实现"),我使用不同的配置文件。我知道有几个选项告诉spring使用特定的实现。

  1. @Profile / @Conditional添加到使用@Component注释的班级。优点:简单。缺点:我不喜欢有关配置文件的信息分散在各个组件中的事实。
  2. 从实现中删除@Component注释,并在特定于配置文件的@Configuration@Bean SomeService() { return new DefaultSomeService(); })中实例化组件。优点:需要更多代码。缺点。所有特定于配置文件的组件都位于一个位置。
  3. @Component排除@ComponentScan(通过向实现添加显式自定义注释@IgnoreComponentScan以防止歧义)并在特定于配置文件的@Configuration中实例化组件。接近第二个选项,但为组件提供更多清晰度(我们可以保留@Repository / @Service注释)
  4. 还有其他选择吗?哪种方式更合适?

0 个答案:

没有答案