Spring 3.2 с Java 7 и Java 8
Я прочитал следующие вопросы, связанные с совместимостью с Spring 3.2 и Java 8, но у меня все еще мало открытых вопросов.
пружинный стержень 3.2.9 + Java 8
Допустим, есть артефакт (например, DAL), который использует Spring 3.2, и этот артефакт должен быть разделен между службой java 7 (служба A) и службой java 8 (служба B). Эти сервисы будут скомпилированы и запущены для соответствующих Java/JVM.
Теперь вопрос - можно ли будет использовать DAL как в Service-A, так и в Service-B?
Согласно фрагменту 1, это должно работать, потому что среда выполнения Java 8 поддерживает библиотеки Spring 3.2, скомпилированные для Java 7, но согласно фрагменту 2 это не должно работать, так как Service-B был соблюден для Java 8 и будет использовать DAL, который имеет был скомпилирован против Java 7.
Фрагмент 1:
Однако в некоторых весенних заметках о выпуске говорится, что Spring Framework 3.2.x будет поддерживать развертывание в средах исполнения JDK 8 для приложений, скомпилированных с JDK 7 (с -target 1.7) или более ранними версиями. Обратите внимание, что он не будет поддерживать формат байт-кода JDK 8 (-target 1.8, как необходимо для лямбда-символов); Для этого обновите версию Spring Framework 4.0.
Фрагмент 2:
Версии Spring Framework, которые старше 4.0M1, не работают с классами, скомпилированными для Java 8.
1 ответ
Нет смысла переходить на Java 8 с Spring 3.x, лучше переходить на JDK 1.8 и Spring 4.x. Миграция JDK 8 не должна быть проблемой, если код не должен быть изменен для функций JDK 8.
Spring 3.2.9 будет лучшим выбором с точки зрения поддержки Java 8-байтового кода.