Это немного общий вопрос, и наличие конкретных примеров поможет понять, нормально ли это делать или нет.
Но, вообще говоря:
- Хорошо, если ваша библиотека зависит от других библиотек определенных версий. Большинство библиотек делают. Вопрос в том, насколько тяжелой и навязчивой является эта библиотека. И, к сожалению для вас, библиотеки Spring, как известно, оба. В случае конечного пользователя вашей библиотеки, в случае конфликтов ему просто придется выбрать, хочет ли он обновить версию Spring для вашей библиотеки или нет
- Наличие некоторого распределенного состояния не обязательно является побочным эффектом. EhCache - это, например, библиотека распределенного кэша. Основной шаблон должен быть как можно более твердым. Когда я разработал кеширование для библиотеки Vert.x WebClient , я сделал так, чтобы он полагался на интерфейсы, а не на твердую реализацию, поэтому, если кто-то решит, что он не хочет использовать вашу библиотеку (например, компонент Spring), он может предоставить альтернативное решение.
Опять же, это основные рекомендации, не видя ваш код. Если вы намереваетесь открыть его исходный код, не стесняйтесь делиться конкретными битами, чтобы получить более конкретную информацию от сообщества StackOverflow.