SpringBoot2-Глава 1: Интеграция базовой инфраструктуры

задняя часть Spring Android gradle

Давным-давно я опубликовал серию руководств по javaweb, исследуя интеграцию конфигурации из среды Spring в Springboot, а также объяснил небольшой проект в блоге посередине. Для получения дополнительной информации, пожалуйста, посетите: https://acheng1314.cn


Быстро собрать фреймворк springboot2

GitHub для этого проекта: https://github.com/pc859107393/Go2SpringBoot.git

Учащиеся, заинтересованные в общении со springboot для быстрой разработки, могут добавить следующую группу пингвинов.

行走的java全栈

Зачем использовать спрингбут?

Давным-давно, когда я исследовал интеграцию фреймворка Spring+SpringMvc+Druid+Mybatis в свой проект, мы потратили две главы на подробное обсуждение интеграции фреймворка Spring Точно так же даже опытный Java-программист построил бы полный и стабильный framework также займет много времени. Но Springboot решает эту проблему, и автору требуется всего несколько минут, чтобы собрать Springboot-проект. Давайте посмотрим на это по крупицам.

необходимые инструменты

  • JDK1.8
  • IntelliJ IDEA 2018.1.4 (минимальная версия, которую я сейчас использую)
  • MySQL, Navicat или DataGrip
  • Инструмент сборки: maven или gradle, рекомендуется gradle, в конце концов, я использую gradle
  • Другие, мы продолжим следить за тем, где мы будем использовать его позже.
  • git, используйте этот инструмент для синхронизации проекта на моем github: https://github.com/pc859107393/Go2SpringBoot.git

Создать проект

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

① В приветственном интерфейсе идеи мы выбираемCreate New Project, как показано на рисунке 1.1.

图1.1

Рисунок 1.1 Экран приветствия

② Затем мы выбираем левыйSpring Initializrзатем нажмитеnext,ВходитьProject Metadataинтерфейс, как показано на рисунке 1.2.

图1.2

Рисунок 1.2 Выбор инициализации проекта Spring

③ Затем начните настраивать основные параметры проекта, здесь мы немного реализуем, как показано на рисунке 1.3.

图1.3

Рисунок 1.3 Основные параметры проекта конфигурации

在图1.3中,我们需要着重注意的是: 项目类型设置为Gradle project,开发语言我选择的是kotlin,打包方式jar,java语言版本是8,其他的参数大家自行百度

④ После завершения вышеуказанной настройки параметров проекта мы выбираем зависимость ресурсов проекта. Зависимости ресурсов проекта — это то, какие расширения пакетов jar нам нужно использовать. Интерфейс показан на рисунке 1.4.

图1.4

Рисунок 1.4 Выбор ресурсов, зависящих от проекта

На рисунке 1.4 выше левая сторона — это родительская категория ресурса, средняя — подробное имя ресурса, а правая сторона — выбранная нами зависимость.Также отображается иерархия каталогов.Пожалуйста, сделайте соответствующий выбор в соответствии с моим выбор. . Примечание. Версия SpringBoot используется по умолчанию.

⑤ Когда мы поместим рисунок 1.4 и нажмемnextПосле ввода ссылки на имя каталога проекта мы можем выбрать имя, которое нам нравится.Примечание. Не нажимайте «Готово» сразу после написания имени! Не нажимайте «Готово» сразу после написания имени! Не нажимайте «Готово» сразу после написания имени!

Здесь у нас есть небольшая приятная деталь, с помощью которой мы можем ускорить сборку проекта.

 1. gradle项目的构建是需要gradle环境的。
 2. gradle和maven一样是进行远程资源依赖的,所以合理的远程资源仓库可以加快构建速度(资源下载速度快了,减少大部分等待时间)。
 3. 修改文件内容 项目目录->gradle->wrapper->gradle-wrapper.properties 中的distributionUrl的值为:http\://7xlmzq.com1.z0.glb.clouddn.com/gradle-4.5.1-bin.zip
 4. 在项目中的build.gradle文件中修改repositories字段相关的内容。添加如下内容:
 
    maven { url "http://maven.aliyun.com/nexus/content/repositories/central" }

⑥ После выполнения этих двух шагов мы можем выбрать «Готово», чтобы войти в проект. Примерный вид показан на рис. 1.5.

图1.5

Рисунок 1.5 Сборка проекта завершена

Добавить зависимые ресурсы

В традиционных веб-приложениях Java мы обычно используем классические три уровня для решения проблем.Классические три уровня относятся к:dao->service->web, то же здесь мы также сначала интегрируем эти три слоя.

① Открытьbuild.gradle, посмотри на дноdependenciesКакие зависимости включены. На данный момент зависимости проекта должны быть следующими:

dependencies {
   //aop支持
   compile('org.springframework.boot:spring-boot-starter-aop')
   //缓存
   compile('org.springframework.boot:spring-boot-starter-cache')
   //快捷生成RESTFul文档
   compile('org.springframework.boot:spring-boot-starter-data-rest')
   //模板引擎
   compile('org.springframework.boot:spring-boot-starter-freemarker')
   //数据校验
   compile('org.springframework.boot:spring-boot-starter-validation')
   //传统的web
   compile('org.springframework.boot:spring-boot-starter-web')
   //新的webflux
   compile('org.springframework.boot:spring-boot-starter-webflux')
   //mybatis的支持
   compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2')
   //Kotlin支持
   compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
   compile("org.jetbrains.kotlin:kotlin-reflect")
   //springweb项目快速重启
   runtime('org.springframework.boot:spring-boot-devtools')
   //mysql链接
   runtime('mysql:mysql-connector-java')
   //测试支持
   testCompile('org.springframework.boot:spring-boot-starter-test')
   testCompile('io.projectreactor:reactor-test')
   //在上面的依赖中 compile是任何时候都需要的依赖,runtime是紧紧在运行时需要依赖,testCompile是在测试的编译和运行时候均需要。
}

Какие фреймворки мы в основном использовали в моей предыдущей серии руководств? В основном используются: Spring+SpringMvc+Mybatis+Druid+SpringFox, поэтому эти наборы фреймворков, составляющих полноценное веб-приложение, незаменимы, поэтому нам нужно добавить следующие зависимости.


    compile 'com.alibaba:druid-spring-boot-starter:1.1.9'

    compile 'com.google.code.gson:gson:2.7'
    //mybatis-plus插件支持
    compile 'com.baomidou:mybatis-plus:2.3'
    compile 'com.baomidou:mybatis-plus-boot-starter:2.3'

    compile "io.springfox:springfox-swagger2:${springfoxVersion}"
    compile "io.springfox:springfox-staticdocs:2.6.1"
    compile "io.springfox:springfox-swagger-ui:${springfoxVersion}"
    compile 'com.github.xiaoymin:swagger-bootstrap-ui:1.7.2'
  • 个人原因经常使用gson,上面的springfoxVersion='2.8.0'

Затем мы обновляем gradle или выбираем Import Changes в правом нижнем углу, чтобы импортировать добавленные нами зависимости. На этом этапе добавляются наши зависимости.

Интеграция с фреймворком

По сути, интеграция фреймворка — это не что иное, как координация различных bean-компонентов, построенных на основе режима bean-компонента Spring, что является очень сложным и утомительным процессом при традиционной ручной настройке приложений Spring. Но в нашу эпоху springboot все упростилось, нужно только найти официальные документы соответствующих ресурсов и интегрировать их со ссылкой на документы.

мой интегрированный файл конфигурацииapplication.propertiesследующее:

debug=false
trace=false

# Druid连接池配置,官方配置参考:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
spring.datasource.druid.url=jdbc:mysql://localhost:3306/cc_db?useUnicode=true&characterEncoding=utf8&autoReconnect=true
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
spring.datasource.druid.username=root
spring.datasource.druid.password=laopo5201314
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=10
spring.datasource.druid.max-wait=10
spring.datasource.druid.filters=stat,wall
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000

# 配置StatFilter
spring.datasource.druid.filter.stat.db-type=mysql
spring.datasource.druid.aop-patterns= -cn.acheng1314.*

# 配置WallFilter
spring.datasource.druid.filter.wall.enabled=true
spring.datasource.druid.filter.wall.db-type=mysql
spring.datasource.druid.filter.wall.config.delete-allow=false
spring.datasource.druid.filter.wall.config.drop-table-allow=false

## Druid WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
spring.datasource.druid.filter.stat.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.gif,*.png,*.jpg,*.html,*.js,*.css,*.ico,/druid/*
#
## Druid StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
#spring.datasource.druid.stat-view-servlet.enabled=true
#spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
#spring.datasource.druid.stat-view-servlet.reset-enable=true
#spring.datasource.druid.stat-view-servlet.login-username=admin
#spring.datasource.druid.stat-view-servlet.login-password=admin
#spring.datasource.druid.stat-view-servlet.allow=
#spring.datasource.druid.stat-view-servlet.deny=

#事物提交失败回滚和aop
spring.transaction.rollback-on-commit-failure=true
spring.aop.auto=true
spring.aop.proxy-target-class=true

spring.http.encoding.force=true
spring.http.encoding.force-request=true
spring.http.encoding.charset=utf-8
spring.http.converters.preferred-json-mapper=jackson
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=1024mb
spring.servlet.multipart.max-request-size=1024mb

#freemarker配置
spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.cache=true
spring.freemarker.content-type=text/html
spring.freemarker.charset=UTF-8
spring.freemarker.check-template-location=true
spring.freemarker.enabled=true
spring.freemarker.suffix=.ftl
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true
spring.freemarker.request-context-attribute=req

server.port=8181
spring.resources.static-locations=classpath:/static/

#Mybatis配置,官方参考:http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
mybatis.mapper-locations=classpath:/mapper/*.xml
mybatis.type-aliases-package=cn.acheng1314.base.domain
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.use-generated-keys=true
mybatis.configuration.use-column-label=true

mybatis-plus.mapper-locations=classpath:/mapper/*.xml
mybatis-plus.type-aliases-package=cn.acheng1314.base.domain
#主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
mybatis-plus.global-config.id-type=0
#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
mybatis-plus.global-config.field-strategy=0
#驼峰下划线转换
mybatis-plus.global-config.db-column-underline=true
#刷新mapper 调试神器
mybatis-plus.global-config.refresh-mapper=true
mybatis-plus.global-config.capital-mode=true
mybatis-plus.configuration.cache-enabled=true
mybatis-plus.configuration.map-underscore-to-camel-case=true
#配置文件設置請參考官網文檔:https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/reference/htmlsingle/#production-ready-endpoints

В приведенном выше файле конфигурации мы находимся в каталоге разработки проекта.resourcesСоответствующий скомпилированный каталогclasses.

На данный момент наша интеграция с фреймворком почти завершена, чтобы узнать подробности, я предлагаю вам перейти на официальный сайт, чтобы проверить документацию. Конечно, самое главное — это основная идея интеграции с фреймворком.Заинтересованные детской обувью могут ознакомиться с моими предыдущими уроками по теме.

Проверьте эффект интеграции

① Протестируйте вывод json, код выглядит следующим образом:

   @GetMapping(value = ["/"], produces = [MediaType.APPLICATION_JSON_UTF8_VALUE])
   @ResponseBody
   fun MainLocal(): Any = User("程", "18976962315", "123456", "吹牛", Date())

②. Протестируйте рендеринг страницы freemarker.

   @GetMapping(value = ["/test"], produces = [MediaType.TEXT_HTML_VALUE])
   fun getTest(map: ModelMap): String {
       map["test"] = MainLocal()
       return "test1"
   }

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