4
我試圖創建一個Component
這將是Autowired
除非用戶創建一個不同的實現。 我用下面的代碼,試圖隔離問題:如何在Spring中創建默認的可覆蓋組件?
接口:
public interface A {...}
實施:
@Component
@ConditionalOnMissingBean(A.class)
public class AImpl implements A {...}
的使用代碼:
public class AUsage {
@Autowired
private A a;
}
在這例如,我沒有將AImpl
自動裝入AUsage
。 如果我在另一個班級實施A
而沒有ConditionalOnMissingBean
它可以工作。
當然,爲了這個工作,'AUsage'也必須是一個Spring bean。在上面的例子中,它沒有'@ Component'註釋。你忘了複製並粘貼到你的問題?如果沒有注入「AImpl」,那麼它很可能在未被組件掃描的包中。確保包含'AImpl'的軟件包包含在組件掃描中。 – Jesper
'如果我在沒有ConditionalOnMissingBean的情況下在另一個類中實現A,它就會起作用。「以及如果從上面的代碼中刪除_ConditionalOnMissingBean_批註,該怎麼辦?如果bean仍未被自動裝配 - 看起來問題與@Jesper描述的smth有關 – bsiamionau
AUsage有一個@ Component組件註解,但我隱藏它來隔離問題。 – orirab