Основновые нововведения:
- Spring expression language (SpEL): входящий в ядро парсер выражений, используемых в определениях бинов, позволяющий обращаться как к значениям вложенных бинов, так и к структурам окружения (таким, как значения системных свойств (property) через общепринятый синтаксис #{…} .
- Расширена поддержка для компонентов, основанных на аннотациях: добавлены классы конфигурирования и аннотированые фабричные методы (по образу и подобию Spring JavaConfig). Теперь Spring позволяет осуществлять внедрение конфигурации через выражение @Value раскрывающееся через вычисляемое в рантайм #{…} или статическое ${…} выражение.
- Выразительная модель включения типов позволяет создавать мета-аннотации для установки пользовательским типам области видимости и других характеристик. Скажем, пользовательская аннотация @MyService включает @Service, @Scope(«request») и @Transactional(readOnly=true) сразу.
- Стандартизированное внедерение зависимостей. Spring 3.0 полностью поддерживает спецификацию JSR-330 на внедрение зависимостей - внедрение через аннотации @Inject с соответствующими моделями квалификаторов и поставщиков, - как альтернативу собственной модели внедрений через @Autowired и т.п.
- Декларативная модель проверки на основе аннотаций-ограничений: настройка в стиле Spring поставщика JSR-303 Bean Validation (такого же как Hibernate Validator 4.0). Включает возможность проверки через аннотации в Spring MVC и предоставляет единый способ для определения ограничений на биндинг к Spring'у.
- Улучшен биндинг и форматирование через аннотации: добавлены Converter и Formatter SPI как альтернатива стандартному PropertyEditor. Форматированием можно управлять аннотациями в стиле проверок JSR-303, к примеру используя @DateTimeFormat. Обратите внимание на новое пространство имен в Spring MVC для настройки форматирования и проверок.
- Современная поддержка REST средствами самого Spring MVC - отображение адресов запросов в стиле REST, получение значений URI через параметр @PathVariable и подбор решения в зависимости от содержимого переговоров. Поддержка REST на стороне клиента возможна с помощью класса RestTemplate.
- Встроенная богатая поддрежка Portlet 2.0: Spring MVC полностью поддерживает окружение, события и схему запроса ресурсов Portlet 2.0. Включая специальные возможности отображения для типовых характеристик запроса портлетов: @ActionMapping, @RenderMapping, @ResourceMapping, @EventMapping.
- Отображение в Object/XML (OXM) ранее известное как часть Spring Web Services теперь стало частью ядра. Искаропки поддерживаются маршаллинг и анмаршаллинг JAXB 2, Castor и т.п. Возможна итеграция с XML в Spring MVC и Spring JMS.
- Возможности шедулинга следующего поколения: механизмы TaskScheduler и Trigger с поддержкой cron'а. Spring 3.0 идет с пространстовм имен для управления задачами и поддерживает аннотации @Async и @Scheduled, которые могут быть выполенны через пул «родных» или управляемых сервером нитей .
Помимо этих основных изменений есть сотни улучшений в мелочах, которые вы, вероятно, оцените, когад будете апгрейдиться с Spring 2.5. Смотрите ченджлог и явадоки.
По части системных требований Spring 3.0 укладывается в широкий диапазон окружений. Два ключевых требования - поддержка Java SE 5 и Servlet 2.4 (и выше). Подйдут Tomcat 5.x и 6.x, хотя сохранена совместимость с WebSphere 6.1 и WebLogic 9.2 (которые формально всё еще основаны на J2EE 1.4). В тоже время мы уже поддерживаем GlassFish v3, адаптируя Spring к API Java EE 6.
Короче, Spring 3 предоставляет новые возможности компонентной модели и такие стандарты, как внедрения SR-330 и проверки JSR-303 для стабильного производственного окружения без необходимости апгрейдить сервера. Всё что нужно - обновить библиотеки вашего приложения до Spring 3.0.
>>> Подробности