Создание строительных лесов Spring Boot с нуля (1): открытие и технический отбор

Spring Boot Java

1. Введение

В настоящее времяSpring Bootстал мейнстримомJava WebФреймворк разработки, владеющийSpring Bootи может быть настроен в соответствии с бизнесомSpring BootстатьJavaЭто обязательный навык для разработчиков, но он всегда фрагментирован и не хватает системы, поэтому родилась идея построения back-end скаффолдинга с нуля. И объедините детали этого процесса с некоторыми предыдущими статьями, чтобы показать вам, я надеюсь, что это действительно поможет обучению.Spring BootКонечно, возможности ограничены.Если есть недостатки, пожалуйста, дайте больше советов.

2. Целевые группы

Во-первых, это место не совсем нетронутоSpring Bootновички, потому чтоSpring BootНачать работу с простого введенияSpring BootОн также предоставляет некоторые готовые решения для фактической разработки.

3. Введение в структуру проекта

На самом деле мне не очень нравится такая взаимозависимость нескольких модулей,DAO,Service,ControllerЗадействуйте слой, а затем полагайтесь на слои. Для монолитных проектов такая структура усложняет простые вещи и легко может привести к путанице в управлении зависимостями. Итак, для общих простых проектов я рекомендую следующую структуру:

项目总体结构

kono-dependenciesЭто модуль, который зависит от управления версиями и отвечает заkono-appУправление всеми версиями зависимостей и выбор зависимостей. В общемkono-appВсе зависимости должны исходить изkono-dependenciesИ версия отkono-dependenciesНаследование, обеспечивающее централизованное управление зависимыми версиями, что гарантирует выбор технологии и совместимость.

кMavenНапример,kono-dependenciesбудет содержать только одинpom.xmlи способ упаковкиpackagingможет быть толькоpom. Все зависимостиdependencyManagementуправлять.

<groupId>cn.felord</groupId>
<artifactId>kono-dependencies</artifactId>
<version>1.0.0.RELEASE</version>
<!--打包方式-->
<packaging>pom</packaging>

<dependencyManagement>
   <!--被管理的依赖-->
</dependencyManagement>

Вот маленькая хитрость, которую мы поставилиSpring BootДобавление родительской зависимости в управление эквивалентно добавлениюSpring Bootвсе официальныеstarterОбъединенное управление:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>${springboot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
         <!-- 其它依赖 -->
    </dependencies>
</dependencyManagement>
      

Конечно, если есть потребности бизнеса, его можно разделить на большее количество модулей, но управление зависимостями должно быть четким и контролируемым.

4. Номер версии

Правила для номеров версий также очень изучены. Здесь я выбираю самый простой способ понять, такжеSpring BootИспользуемый стиль именования номера версии.

Spring Boot版本号风格

  • MajorНомер основной версии, увеличивающийся при наличии несовместимых изменений.

  • MinorДополнительный номер версии, увеличивающийся на дополнительный номер версии, когда функциональные возможности добавляются с обратной совместимостью.

  • PatchНомер версии исправления. Увеличивайте номер версии исправления при наличии исправлений ошибок, совместимых с предыдущими версиями.

  • LabelОтметьте, чтобы различать версию разработки, версию моментального снимка, промежуточную версию и официальную версию выпуска.

5. Технический отбор

Ниже приведены общие варианты выбора для конкретных сценариев стека технологий Java:

  • базовая среда интеграции springboot
  • веб-стандарт servlet4
  • веб-контейнер undertow или tomcat
  • Уровень абстракции кеша spring cache
  • структура безопасности Spring Security
  • Фреймворк безопасности веб-токена jsontokenТехнологии
  • mybatis plus 3 ORMУсилить
  • весенние данные jpa (необязательно)
  • ПО промежуточного слоя кэша Redis
  • база данных mysql
  • конвертер bean-компонентов mapstruct, используемый во время компиляции
  • инструмент упрощения ломбокских бобов
  • документация swagger2 (тест для разработчиков)
  • технология докер-контейнеров

В начале часть технологий в этом не будет интегрирована, с итерацией они будут добавляться в нужное время, и даже будут добавляться стеки технологий, которые в это не входят.

6. Наконец

В процессе создания строительных лесов с нуля можно постепенно научиться интегрировать некоторые функции в проект, и в то же время можно также увидеть некоторые проблемы, с которыми можно столкнуться только в реальной разработке, и идеи решения этих проблем. В то же время, если у вас есть хорошие предложения и вопросы во время этого процесса, вы также можете связаться со мной.Спасибо за ваше постоянное внимание и общее улучшение.