Я вижу несколько решений для этого ...
Если вы хотите получить по одному файлу JAR на страну, правильным способом было бы создать отдельный проект Maven для каждой страны.Имейте общий проект, который определяет интерфейс, а затем отдельный проект для каждой страны, который содержит класс реализации, проект интерфейса как зависимость и любые необходимые дополнительные функции или конфигурации.Таким образом, вы можете четко разделить различные реализации и не беспокоиться о настройке сборки.Это также расширяемо, поскольку вам просто нужно добавить другой проект, если вы хотите добавить новую страну - вы можете нарушить любую существующую функциональность.
Если вы хотите сохранить его в одном проекте, вам нужноподумать о том, когда принимать решение о том, какую страну использовать: во время сборки или во время выполнения?С Maven вы получите решение во время сборки, тогда как Spring - решение во время выполнения.Если вы хотите иметь возможность принимать решение во время выполнения, возможно, вам подойдет файл свойств.Запустите сборку как можно более универсально, без какой-либо ссылки на используемую страну, а затем позвольте пользователю или администратору решить, какую страну использовать во время выполнения, например, предоставив файл свойств, который имеет ссылку на файл контекста Spring для использования.В вашем методе main
вы можете загрузить этот файл свойств из пути к классам и решить, какой файл контекста Spring загрузить.
В этом случае обратитесь к общему имени бина в конфигурации Spring, т.е. убедитесь, чточто независимо от того, какой специфический для страны контекстный файл Spring вы загружаете, все они содержат компонент с идентификатором country
.