Хотя maven предоставил скелеты проекта, такие как maven-archetype-webapp и maven-archetype-quickstart, чтобы помочь нам быстро построить архитектуру проекта, архитектура проекта по умолчанию, инициализированная архетипом, не может удовлетворить потребности разработки.
Диаграмма структуры проекта, созданная с помощью пользовательского типа арки
Чтобы стимулировать интерес к чтению, сначала поместите диаграмму структуры проекта, которая использует пользовательский архетип для создания проекта.
В основном классыarchetype
Поколение, чтобы позволить вам учиться действительно исчерпан
что такое архетип
Его можно просто понимать как класс инструмента шаблона, черезarchetype
Мы можем быстро сгенерировать базовую структуру проекта. Например, мы используемidea
Создаватьmaven web
проект, часто выбираютmaven-archetype-webapp
шаблон для инициализации проекта, используйтеmaven-archetype-webapp
Созданный проект включает в себяwebapp
каталог, который содержитweb
файл конфигурации
Состав архетипов
Чтобы написать обычайarchetype
, В первую очередь нужно знать архетип композиции. Архетип состоит из четырех частей:
-
prototype files
Файл прототипа
родыsrc/main/resources/archetype-resource
Под содержанием.prototype files
Под файлом прототипа можно понимать подмодуль в мультимодуле или исходный файл в одномодульном проекте [то есть файл src]. Эти файлы прототипов используют соответствующиеarchetype
генерируется при сборке проекта -
archetype-metadata.xml
родыsrc/main/resources/META-INF/maven/
Под содержанием. Файлы прототипов и их использование в основном перечислены в этом файле конфигурации.archetype
Параметры, необходимые для создания шаблона проекта -
prototype pom
родыsrc/main/resources/archetype-resources
Под содержанием. этоpom
archetype
Создайте шаблон проекта, если проект представляет собой один модуль, он зависит от управления всем проектом; если это многомодульный проект,pom
Всегдаpom
файл, который определяет подмодули проекта и управляет зависимостями подмодулей и т. д., подмодулиpom
Определенный в подмодуле файл pom подмодуля управляет только зависимостями подмодуля. -
archetype pom
на заказarchetype
в корневом каталоге проекта. Этоarchetype
инженерный проектpom
файла, в нем вообще ничего нет, и он не появится вarchetype
В созданном шаблонном проекте
Структурное описание Супермена [Custom Arche PETYPE]
-
superman
Схема структуры проектасодержитarchetype
Четыре компонента, дваpom
файл, аarchtype-metadata
Файл и пять файлов прототипа [__rootArtifactId__-*
],в__rootArtifactId__
Он будет заменен переданным значением при создании шаблона проекта. - файл конфигурации метаданных archtype
- 1. Определите использование
archetype
Параметры, которые необходимо передавать для генерации проекта шаблона<!--需要输入的属性--> <requiredProperties> <requiredProperty key="groupId"> <!--默认的groupId--> <defaultValue>com.h2t.test</defaultValue> </requiredProperty> <requiredProperty key="artifactId"> <!--默认的artifactId--> <defaultValue>demo</defaultValue> </requiredProperty> <requiredProperty key="package"> <!--默认的包名和groupId一样--> <defaultValue>${groupId}</defaultValue> </requiredProperty> </requiredProperties>
${}
Переменные идентифицируются командной строкой Maven, переданной в - 2. Определите файл прототипа
<module id="${rootArtifactId}-web" name="${rootArtifactId}-web" dir="__rootArtifactId__-web"> <fileSets> <fileSet filtered="true" encoding="UTF-8" packaged="true"> <directory>src/main/java</directory> <includes> <include>**/*.*</include> </includes> </fileSet> <fileSet filtered="true" encoding="UTF-8" packaged="true"> <directory>src/test/java</directory> <includes> <include>**/*.*</include> </includes> </fileSet> <fileSet encoding="UTF-8"> <directory>src/main/resources</directory> <includes> <include>**/*.*</include> </includes> </fileSet> <fileSet encoding="UTF-8"> <directory>src/test/resources</directory> <includes> <include>**/*.*</include> </includes> </fileSet> </fileSets> </module>
module
Введение атрибута:id
: проект подмодуляartifactId
dir
: Исходный файл проекта подмодуля находится вarchetype-resources
соответствующийdirectory
name
: Имя подмодуля.
- 1. Определите использование
- pom-файл прототипа
- 1. Определяет пять подмодулей
<!--项目子模块--> <modules> <module>${rootArtifactId}-common</module> <module>${rootArtifactId}-dao</module> <module>${rootArtifactId}-service</module> <module>${rootArtifactId}-web</module> <module>${rootArtifactId}-model</module> </modules>
- Унифицированное управление версиями зависимостей подмодулей
Все зависимости, требуемые подмодулями, определены в этом<dependencyManagement> <!--modules--> <dependency> <groupId>${groupId}</groupId> <artifactId>${rootArtifactId}-common</artifactId> <version>${version}</version> </dependency> <dependency> <groupId>${groupId}</groupId> <artifactId>${rootArtifactId}-dao</artifactId> <version>${version}</version> </dependency> <dependency> <groupId>${groupId}</groupId> <artifactId>${rootArtifactId}-service</artifactId> <version>${version}</version> </dependency> <dependency> <groupId>${groupId}</groupId> <artifactId>${rootArtifactId}-model</artifactId> <version>${version}</version> </dependency> </dependencies> </dependencyManagement>
pom
, не требуется, когда подмодули используют зависимости<version>
Этикетка
- 1. Определяет пять подмодулей
- Файлы прототипа указаны как веб-модули.Это простой проект maven, который пишет класс, использующий архетип для создания шаблонных проектов.
Прикрепил:Superman Archetype код
Технический выбор супменского архетипа
- DB
MySQL - ORM
MyBatisPlus - Framework
SpringBoot
DONE
- Интеграция фреймворков SpringBoot и MyBatisPlus
- Унифицированная обработка исключений
- Единая инкапсуляция результатов
- Конфигурация журналов log4j
-
MybatisPlus
- Генератор кода
- Пагинация
- Надгробие
Быстрый старт [руководство по использованию архетипа супермена]
-
1. Загрузите исходный код
git clone https://github.com/TiantianUpup/superman.git
-
2. Откройте проект супермена и установите его на локальный склад.
Переключитесь на ветку 20190815-V2UPDate перед запуском команды, главная ветвь была нарушена мной [что позор! ! ! 】
Выполните следующую командуmvn clean install
-
3. Инициализируйте проект с помощью пользовательского архетипа
mvn archetype:generate -DgroupId=com.h2t.test -DartifactId=superman-demo -Dversion=1.0.0-SNAPSHOT -DarchetypeGroupId=com.h2t.study -DarchetypeArtifactId=superman -DarchetypeVersion=0.0.1-SNAPSHOT -X -DarchetypeCatalog=local
Параметр Описание
-DgroupId
Идентификатор группы, такой же, как идентификатор группы имени пакета проекта по умолчанию.
DartifactId
: уникальный идентификатор проекта, т. е. название проекта.
-DarchetypeGroupId
: групповой идентификатор супермена, значение изменять не нужно.
-DarchetypeArtifactId
: ArtifactId супермена, значение менять не нужно -
4. изменить файлы конфигурации в папке ресурсов, а файл ресурсов пометить Resources Root
Эта папка
application.properties
,logback.properties
,logback-spring.xml
три файла конфигурации-
application.properties
Модификация конфигурационных файловapplication.properties
в основномSpring
,MyBatisPlus
И информационная база данных конфигурацииspring.datasource.url=jdbc:mysql://localhost:3306/your_database?characterEncoding=UTF8&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=your password
Измените базу данных, пароль, имя пользователя по умолчанию
root
mybatis-plus.mapper-locations=classpath*:/mapper/*.xml # mybatis-plus.type-aliases-package=
уточнить
MybatisPlus
Пакет имен классов сущностей, т.е.model
модульныйpo
Имя пакета слоя, по умолчаниюMybatiPlus
изmapper
Файл сохраненresource
внизmapper
В папке вы можете изменить его самостоятельно -
logback.properties
Модификация конфигурационных файловlogback.properties
Определенныйerror
журнал уровня иinfo
Адрес хранения лога уровняLOG_ERROR_HOME= LOG_INFO_HOME=
-
logback-spring.xml
Модификация конфигурационных файловlogback-spring.xml
В основном определение правил вывода журнала, если этоwindows
Систему не нужно модифицировать, еслиlinux os
илиmac os
, вам нужно изменить адрес хранения журнала<fileNamePattern>${LOG_ERROR_HOME}//%d.log</fileNamePattern>
будет
//
превратиться в/
-
-
Использование генератора кода для генерации 5
controller
,service
,dao
,po
код слоя Класс генератора кода находится по адресуservice
под модульgenerator
Под пакетом нужно только инициализировать несколько значений полей и запустить для генерации соответствующего кода. Перед запуском сначала создайтеmp-generator-output
папка, название папки иOUTPUT_DIR
Значение поля соответствует-
PACKAGE_NAME
Имя пакета сгенерированного кода такое же, как и имя пакета проекта, при копировании прошлого кода возникнут небольшие проблемы. -OUTPUT_DIR
Сгенерированный код сохраняет адрес файла, который по умолчанию сохраняется в проекте.mp-generator-output
В папке вы можете изменить ее на собственный адрес сохранения. -
AUTHOR
Имя автора в заметке -
DRIVER_NAME
управляемый базой данных -
HOST
номер хоста базы данных -
PORT
порт базы данных -
DATABASE
имя базы данных -
USERNAME
имя пользователя базы данных -
PASSWORD
пароль базы данных
-
-
6. Переместите сгенерированный код в соответствующий пакет соответствующего модуля.
-
controller
папка
соответствующий классу сущностиController
, В категории каталога дляweb
под модульcontroller
под пакетом -
mapper
папка соответствующий классу сущностиDAO
слой, каталог содержитxml
файл и класс интерфейса соответствующей сущности, будутxml文
перейти кdao
модульresource
внизmapper
папка, вам нужно создать ее самостоятельноmapper
папку, переместите интерфейс вdao
под модульmapper
упаковать и добавить в класс интерфейса@Mapper
Аннотация, вам нужно создать его самостоятельноmapper
Сумка. Также отметьте папку ресурсов какResources root
-
service
Соответствует классу сущности интерфейса-
impl
Класс сущности интерфейса, соответствующий классу
будет
service
Интерфейс под каталогом перемещен вservice
под модульservice
под пакетом,impl
Переместите класс в каталог, чтобыservice
под модульservice.impl
под пакетом -
-
po папка Переместите классы в этом каталоге в
model
под модульpo
В пакете и изменить отношения наследования, единое наследованиеBasePO
класс, потому чтоBasePO
класс содержитid
,gmtCreate
,gmtModified
,deleted
Эти базовые поля базы данных необходимо вручную удалить из сгенерированного класса сущностей. автоматически генерируется одновременноpo
класс отсутствует@TableName
,@TableField
Аннотации необходимо добавлять вручную. Узнайте, как использовать аннотацииBasePO
своего рода
-
-
7. Модификация
web
модульaspect
Круговые уведомления под пакетами@Around("execution(* yourpackage.controller..*(..))")
Этот аспект в основном используется для перехвата результата, возвращаемого уровнем контроллера, и инкапсуляции его в унифицированный результат для возврата.
-
8 Запустите проект
web
под модульRunner
Класс является классом запуска, запустите этот класс для запуска, порт по умолчанию — 8081.
Прикрепил:Супермен архетип генерирует демонстрационный адрес проекта
欢迎fork与star[划重点],由于开发经验有限,有些地方可能考虑不周,欢迎提bug。 Иarchetype
Определены только некоторые основные функции, и запросы приветствуются.