我正在尝试创建一个Component
那将是Autowired
除非用户创建不同的实现。
我使用以下代码来尝试隔离问题:
界面:
public interface A {...}
实施:
@Component
@ConditionalOnMissingBean(A.class)
public class AImpl implements A {...}
使用代码:
public class AUsage {
@Autowired
private A a;
}
在这个例子中,我不明白AImpl
自动连接到AUsage
。
如果我实施A
在另一个班级没有ConditionalOnMissingBean
有用。
我尝试复制现有的用途@ConditionalOnMissingBean
从互联网上发现他们都引用了@Bean
method.
事实上,当我将此代码添加到 AUsage 时:
public class AUsage {
@Autowired
private A a;
@Bean
@ConditionalOnMissingBean
public A createA() {
return new AImpl();
}
}
并从 AImpl 中删除注释:
public class AImpl implements A {...}
一切都按预期进行。
如果有人知道的话,我很高兴得到对此的解释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)