我想为mavens pom.xml中定义的依赖项提供自定义接口实现。 案例1 显示没有实施的情况。正如您所看到的,Spring应用程序的pom.xml定义了foo.jar依赖项。 foo.jar使用Configuration接口的DefaultConfiguration。
在Spring应用程序的案例2 中,指定了一个SpecialConfiguration。 将此SpecialConfiguration提供给foo.jar而不是DefaultConfiguration的正确方法是什么?
答案 0 :(得分:0)
只有当客户端没有提供实现时,您才可以将默认实现设置为Spring bean。
如果你使用Spring Boot,你会有非常简单的方法
例如,您可以使用@ConditionalOnMissingBean
。
默认实现将使用@ConditionalOnMissingBean
声明:
@Configuration
public class MyBeanConfig{
@Bean
@ConditionalOnMissingBean
public Configuration configuration() {
return new DefaultConfiguration();
}
}
客户端bean将被声明为任何bean:
@Component
public class SpecialConfiguration implements Configuration {
...
}
通过这种方式,只有在没有定义其他DefaultConfiguration
bean(并由Spring发现)的情况下才会实例化Configuration
。