Используйте реализацию Spring GenericApplicationContext, которая предоставляет вам метод #setResourceLoader.
Вы упомянули ClassPathXmlApplicationContext, который не является GenericApplicationContext, что означает, что вы вынуждены пойти по более уродливому переопределенному маршруту.
GenericXmlApplicationContext - это обычно предпочтительная альтернатива CPXAC, и, как следует из названия, это GenericApplicationContext.
Так что вы должны быть в состоянии сделать следующее:
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.setResourceLoader(new S3ResourceLoader());
ctx.load("s3:///some.bucket.name/path/to/my/spring.xml");
ctx.refresh();
...
Очевидно, что S3ResourceLoader должен быть параметризован с помощью ключей и т. Д. Обратите внимание, что S3ResourceLoader, вероятно, должен расширять DefaultResourceLoader для того, чтобы использовать все остальные доступные там функции, например, обработка "classpath:" и других префиксов ресурсов.
Порядок вызова в приведенном выше примере имеет значение, т. Е. Загрузчик ресурсов должен быть предоставлен до вызова #load с префиксом s3: resource по очевидным причинам.