我目前正在設計一個應用程序配置。 該應用程序將利用Spring,它的可能只使用它的XML bean上下文配置,但要求被設置爲在其旁邊有一些分層的XML配置。這將使用applicationContext中指定的bean。連接到Bean配置的分層配置
例如,給定下列:
的applicationContext.xml:
<bean id="A" class="" init-method="">
<property name="namespace" value="${namespace}"/>
</bean>
<bean id="B" class="" init-method="">
<property name="restTemplate" ref="restTemplate"/>
</bean>
config.xml中:
<configuration>
<consumers-config>
<consumers>
<!--A consumer should be first defined in another configuration file-->
<consumer bean-name="A">
<name>A-1</name>
<namespace>...</namespace>
</consumer>
<consumer bean-name="B">
<name>B-1</name>
</consumer>
</consumers>
</consumers-config>
<works>
<work name="1">
<consumers>
<consumer>A-1</consumer>
<consumer>B-1</consumer>
</consumers>
</work>
</works>
<configuration>
正如可以從上面看到的, config.xml引用了很多applicationContext,有效地使後者成爲依賴關係。
需要進行分層配置是爲了允許用戶修改這些配置,而不需要觸摸applicationContext。
這是理想情況嗎?我應該考慮哪些最佳實踐?換句話說,解決這個問題的最好方法是什麼?
我不知道這是否是最好的方法,因爲我不明白分層配置的要求。可能你可以使用Spring配置文件來創建一些泛型和特定的bean層次結構 –
我從來沒有使用過彈簧配置文件,我會研究它......但我仍然希望用戶只修改分層xml配置而不是applicationContext .XML。你認爲允許用戶修改applicationContext是個好主意嗎? – LoreV
我認爲你正在構建的是一種工作流程解決方案,用戶可以選擇某些流程元素。如果我的假設不正確,請糾正我。按慣例用戶不應該接觸後端配置。爲了做到這一點,他們需要知道內部類/對象等。如果你想提供可定製的工作流程,還有其他可用的選項,如drools-jbpm或活動bpm,這些選項是複雜的,並且有與之相關的學習曲線。但是,如果你的用例很簡單,即使你可以創建一個簡單的工作流程,並給用戶選擇使用用戶界面選擇不同的工作流程。 –