У нас есть старое приложение, которое использует модули. Главная точка входа (main()
метод) конкретизирует модули (классы) с отражением на основе файла конфигурации XML, как:Использование инъекции зависимостей в существующем проекте
<modules>
<module class="com.example.moduleone.ModuleOne" />
<module class="com.example.moduletwo.ModuleTwo" />
<modules>
Несколько модулей имеют дополнительную конфигурацию в modules.xml
, например:
<modules>
<module class="com.example.modulethree.ConfigurableModule">
<config>
<keyOne>valueOne</keyOne>
<keyTwo>valueTwo</keyTwo>
</module>
<modules>
Такого рода модули имеет параметризованный конструктор, который принимает в org.jdom.Element
экземпляр (разобранный из файла XML):
public ConfigurableModule(Element moduleConfig) {
...
}
Мы хотели бы использовать CDI/Weld (или что-то еще) для инъекций зависимостей. Как мы можем создавать экземпляры наших модулей с картой DI?
Было бы проще с Весной или Гизом?
Я не уверен, что это действительно решает сложную часть вопроса OP, который заключается в том, что некоторые из его классов кормятся * частями * дерева синтаксиса основного файла конфигурации во время их создания. Насколько я знаю, вы не можете сделать это весной, так что ему все равно придется переделывать. –
Я не читал это из вопроса. Подход конфигурации «module XML» очень похож на файл конфигурации Spring, который также может импортировать другие файлы конфигурации Spring. Основываясь на описании, я не думаю, что им пришлось бы менять свои классы вообще, просто переписать конфигурации. (По крайней мере, от того, что я могу сказать в вопросе). – clay
@clay: Спасибо за идею, это был настоящий нож для глаз. (Я бы поставил свой ответ, если мог). – user3065913