我有一种情况,我想让客户端注入自己的bean,在我的类中实现一个公共接口,否则使用默认的bean。
举个例子:
public class TestClass {
// Clients can inject this, otherwise use a default...
@Autowired
private ConfigInjector configInjector;
}
我定义的界面和默认实现:
public interface ConfigInjector {
String getConfig();
}
@Component
public class DefaultConfigInjector implements ConfigInjector {
public String getConfig() {
return "DEFAULT CONFIG"
}
}
外部客户端想要注入我的ConfigInjector接口的这个实现:
@Component
public class ExternalConfigInjector implements ConfigInjector {
public String getConfig() {
return "EXTERNAL CONFIG"
}
}
在TestClass中使用@Autowired,如果客户端尝试将TestClass与自己的ConfigInjector实现(ExternalConfigInjector)一起使用,则将存在多个ConfigInjector实现,从而导致 NoUniqueBeanDefinitionException 异常。
那么,我如何与客户共享我的TestClass,允许他们使用自己的ConfigInjector覆盖我的默认值?
答案 0 :(得分:0)
推荐免费课程(1.5小时) 在www.udemy.com上将“Spring Framework和Dependency Injection for Beginners”命名为 解释了所有主要问题和用例。