1 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
簡(jiǎn)短的回答:這取決于你。
長(zhǎng)答案:你可以隨心所欲地做;)
OSGi 中沒(méi)有規(guī)則禁止將多個(gè)組件(屬于聲明性服務(wù)并用 @Component 注釋的類(lèi))放在一個(gè)包中。然而,這在一定程度上取決于您如何定義捆綁包的邊界,即,您是為每個(gè)功能創(chuàng)建一個(gè)捆綁包,還是在 x 層應(yīng)用程序中的每一層創(chuàng)建一個(gè)捆綁包(例如,一個(gè)捆綁包用于數(shù)據(jù)庫(kù),一個(gè)捆綁包用于邏輯和GUI 的一包)。這些示例完全是任意的,但您可以看到,根據(jù)您定義捆綁包范圍的方式,有時(shí)將多個(gè)組件放入一個(gè)捆綁包中是有意義的,有時(shí)則不然。
關(guān)于我建議如何構(gòu)建捆綁包:
為每個(gè)功能創(chuàng)建一個(gè) API 包,例如定義數(shù)據(jù)庫(kù)服務(wù)的 API、定義登錄服務(wù)的 API 或應(yīng)用程序應(yīng)有的任何功能。API 包通常只包含接口、抽象類(lèi)和數(shù)據(jù)類(lèi)型。
為每個(gè)實(shí)現(xiàn)創(chuàng)建一個(gè)實(shí)現(xiàn)捆綁包,其中包含實(shí)現(xiàn) api 捆綁包中定義的服務(wù)接口的類(lèi),并使用 API 捆綁包中的數(shù)據(jù)類(lèi)型與其他捆綁包中的服務(wù)進(jìn)行通信。
每個(gè)實(shí)現(xiàn)包可以放置您認(rèn)為適合服務(wù)實(shí)現(xiàn)的盡可能多的組件,但盡量不要實(shí)現(xiàn)超出您為此包定義的范圍邊界的功能。
添加回答
舉報(bào)