Подтвердить что ты не робот

Spring разность префикса classpath

Документированный здесь он утверждает

Этот специальный префикс указывает, что все ресурсы класса, соответствующие данное имя должно быть получено (внутренне это происходит по существу через ClassLoader.getResources(...) вызова), а затем объединяются для формирования определение конечного контекста приложения.

Может кто-нибудь объяснить это?

В чем разница между использованием classpath*:conf/appContext.xml, а не classpath:conf/appContext.xml без звездочки.

4b9b3361

Ответ 1

ПРОСТОЕ ОПРЕДЕЛЕНИЕ

classpath*:conf/appContext.xml просто означает, что все файлы appContext.xml в папках conf во всех ваших банках в пути к классам будут собраны и объединены в один большой контекст приложения.

В отличие от classpath:conf/appContext.xml будет загружаться только один такой файл... первый найденный в вашем пути к классам.

Ответ 2

Синтаксис classpath*:... полезен в первую очередь, когда вы хотите создать контекст приложения из нескольких файлов определения bean, используя синтаксис подстановочных знаков.

Например, если вы создаете свой контекст с помощью classpath*:appContext.xml, путь к классам будет проверяться для каждого ресурса с именем appContext.xml в пути к классам, а определения bean из всех их объединены в один контекст.

В отличие от этого, classpath:conf/appContext.xml получит один и только один файл с именем appContext.xml из пути к классам. Если их больше одного, остальные будут проигнорированы.

Ответ 3

classpath *: Он относится к списку ресурсов и загружает все такие файлы, присутствующие в пути к классам, и список может быть empty, и если нет такого файла в пути к классам, то приложение не генерирует никакого исключения (просто игнорирует ошибку).

classpath:. Он относится к определенному ресурсу и загружает только первый файл, найденный в пути к классам, и , если такой файл отсутствует присутствует в пути к классу, он будет генерировать исключение

java.io.FileNotFoundException: class path resource [conf/appContext.xml] cannot be opened because it does not exist