В частности, я использую Spring только для настройки моего проекта через ApplicationContext. В моем весеннем xml я загружаю некоторые свойства bean-компонента через PropertyPlaceholderConfigurer. Всякий раз, когда в зависимостях я меняю commons-logging-x.x на jcl-slf4j.jar, загрузка контекста завершается неудачно с ClassNotFoundExceptions на подстановках подстановки. Пример:
В моем spring.xml есть:
<bean id="testbean" class="${testbean.implementingClass}"/>
где testbean.implementingClass определен в spring.properties:
testbean.implementingClass=my.implementation.TestClass
Если я запускаю проект, используя jar для общего журнала, все работает отлично. Если я изменяю его на jcl-slf4j, то я получаю ClassNotFoundException, что класс [$ {testbean.implementingClass}] не был найден, то есть он не выполняет замену заполнителя. Кто-нибудь наблюдал это?
РЕДАКТИРОВАТЬ: Моя проблема не связана с банками, потому что:
От http://www.slf4j.org/legacy.html:
Наша реализация JCL over SLF4J позволит вам постепенно перейти на SLF4J, особенно если некоторые библиотеки, от которых зависит ваше программное обеспечение, продолжат использовать JCL в обозримом будущем. Вы можете сразу же воспользоваться преимуществами надежности SLF4J и одновременно сохранить обратную совместимость. Просто замените commons-logging.jar на jcl-over-slf4j.jar. Впоследствии, выбор базовой структуры ведения журнала будет сделан SLF4J вместо JCL, но без головной боли загрузчика классов, изводящей JCL. Базовая структура ведения журнала может быть любой из сред, поддерживаемых SLF4J. Зачастую замена commons-logging.jar на jcl-over-slf4j.jar немедленно и навсегда решает проблемы загрузчика классов, связанные с ведением журнала общего достояния.