В этом посте представлены общие компоненты приложения и архитектура среды Spring.
Домены приложений
Наши компоненты приложения делятся на две основные категории: система и проблемные домены.
- System Domain — инфраструктурные компоненты, сантехника, это сладкое место весны!
- Проблемная область — бизнес-компоненты, как правило, управляемые прецедентами, это то, за что платит большинство разработчиков
Уровни приложений
Компоненты приложения (компоненты) должны быть разделены на отдельные слои и категории.
Бобовые слои
- Контроллеры (для MVC, системный домен)
- Услуги (проблемный домен)
- Репозиторий (Системный домен)
Другие бобовые категории
- Объекты передачи данных (проблемный домен)
- Системные функции (системный домен)
Контроллер Бобов
Подробнее о контроллерах в следующем блоге в блоге MVC Enterprise Spring Best Practices — TBD
Служебные бобы
Служебные компоненты являются компонентами проблемного домена. Это наиболее значимые в приложении. Служебные компоненты являются фундаментальным компонентом SOA.
- Это POJO
- Всегда определяется из интерфейсов
- НИКОГДА не включайте компоненты инфраструктуры
- НЕТ импорта Spring или служебных библиотек
- НЕТ инфраструктурных аннотаций
- Всегда объявляйте границы транзакций публичными функциями
- Создать реализацию / конкретные классы в подпакете с именем internal
Spring-аннотации могут быть очень полезны для сервисов, полезными аннотациями являются @Service и @Transactional. Чтобы отделить инфраструктуру от бизнес-сервисов, создайте мета-аннотацию для конкретного проекта.
Пользовательские мета-аннотации
package com.gordondickens.service.annotation; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Service @Transactional public @interface AppService { String value() default ""; }
Использование метааннотаций
... @AppService public class MyClass() { ... }
Хранилище бобов
Бины репозитория находятся в системном домене. Подробнее об этом в блоге ORM Enterprise Spring Best Practices — TBD
- НЕ содержат бизнес-логику
- Используйте аннотации Spring и JPA
- Следует считать одноразовым
Бины передачи данных
Объекты передачи данных (DTO) являются фундаментальными объектами в нашей системе и за ее пределами. DTO — это простые публичные POJO, которые получают и отправляют данные в виде логического набора.
- Всегда Общественные Бобы
- Аннотировать с помощью JAXB2 Аннотации
Конверсионные Бобы
Spring предоставляет богатый реестр конверсий по своей сути. Служба преобразования в Spring основана на оригинальной спецификации компонента EJB.
PropertyEditors сосредоточены на данных String в и из нашего приложения.
Класс Spring org.springframework.beans.PropertyEditorRegistrySupport показывает встроенные классы объектов String <->. Которые мы используем, обычно без ведома, в наших приложениях. Когда мы конфигурируем наши приложения с XML и отправляем значения свойств, Spring использует отражение для определения типа аргумента. Если этот тип не является String, Spring ищет PropertyEditor, который может преобразовать String в целевой тип. Мы также можем создавать собственные PropertyEditor и регистрировать их для таких типов, как номер социального страхования США или номер телефона. См. «Весна в действии» Крейга Уолла, 3-е издание, примеры
- Примитивные типы обёрток: Long, Integer и т. Д.
- Типы коллекций: Список, Свойство, Набор, Карта и т. Д.
- Массивы
- Типы утилит: URL, TimeZone, Locale и т. Д.
Spring 3.0 introduced the Conversion service providing us the ability to register a conversion service for object <–> other conversion. To use the conversion registry, we can register a conversion class that will automatically convert to/from MyObject <–> MyOtherObject. See Using Spring Customer Type Converter Blog.
Further Reading
- Enterprise Spring Best Practices – Part 1
- Enterprise Spring Best Practices – Source Code
- FREE Spring Framework PDF (848 pages)
- Craig Wall’s Spring in Action, 3rd Ed