SpringBoot 干货教程 | 第一章:教程目录大纲和前戏

原创 精帖 springboot

神说,要有前戏,于是就有了前戏(划掉!前言!)

其实,做程序员挺苦的,尤其是像我这种天分不高的人,鬼知道我这几年受的委屈和痛苦,有过多少次想要放弃,更有多少次暗暗努力,却又趔趔趄趄,步履蹒跚。

这几年的工作,一直涉及在后端服务。基本没有做过前端和 MVC CRUD 这些,所以在空闲时间,花了不少的时间来开发代码饭网站,一个是兴趣使然,一个是为了保持技能和状态,毕竟我们做 Java 的,就这些路子可走。

一段时间下来,在 SpringBoot 的开发使用上也有了一些心得体会,遂计划写这样一个系列的教程。

听说大佬都是博爱(对写代码事业和大千世界的漂亮小姐姐)、乐于探索和分享的,这就是作为技术人员的我坚持的信念。

说实在的对于新人来说,在开始的时候,免不了是要被前辈责难和白眼的,希望这个世界对小白包容一些(当然,烂泥还是不要写代码了,该转行就转行吧)。

现在网络上已经有很多 SpringBoot 的教程了,但是我为什么要继续写呢?因为多一份教程,就多一份搜索结果,被你找到的机会就大一些,总是会有有缘人搜索到,对于我来说,帮助未知你的在学习的道路上一点点,也是很开心的。

写作过程中肯定会摘抄和借鉴一些现有的好的片段,先感谢!

好了,前戏(划掉,前言)差不多了,简单介绍下这个系列教程的情况。

环境

  1. JDK 1.8
  2. SpringBoot 2.0.5.RELEASE
  3. 开发工具 IntelliJ IDEA 2017
  4. apache Maven 3.3.9
  5. 数据库 MySQL

以上环境的安装和使用都可以在本站找到资料,前面的内容不是很多,可以根据标签查阅一下。

SpringBoot 简介

对 Spring (一个叫春的开源框架哈哈😂)框架盛行了多年的 Java 开发人员来说,每个 Java 开发已经把 Spring 框架当做开发中不可或缺的一部分。之前传统的模式都是以 applicationContext.xml 配置文件的形式存在,而对于大多数入门级开发人员来说配置出现一点纰漏就会导致运行失败或者更大的问题,因此会浪费开发人员很多宝贵的时间,对公司来说也是有所损失。那么 Spring 开源组织很早之前就意识到这种问题的存在,于是他们便对 Spring 框架的全系列组件进行了内部封装。对外只是提供 Maven(jar 管理、项目打包工具)或者 Gradle(新兴jar管理、项目打包工具)的形式来进行引入 parent.pom (maven 配置文件)或者 parent.gradle(gradle 配置文件),让每一个 Spring 项目都是以 Spring 的子项目的形式来运行,这样开发人员不用再去注重配置文件的繁琐而是把精力放到业务逻辑以及更深层次的架构方面。自此 SpringBoot (春之启动哈哈😂)就诞生了,它有着纯正的开源血统,在此非常感谢 Spring 开源组织给我们 Java 开发人员带来的便利!

SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。SpringBoot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,spring boot 整合了所有的框架(不知道这样比喻是否合适)。

这也跟越来越流行的 约定大于配置 思想符合。

教程基于当前写作时候的最新版本 SpringBoot 2.0.5.RELEASE,本来想用 1.5 写的,但是朋友和读者都希望用最新版,大家都知道程序员喜欢追新的嘛,其实两个版本使用的时候区别并没有太大。 不过我是不想看到读者因为没有看到当前最新版本的 SpringBoot 教程而感到失望,我会心理不安的。😄

SpringBoot 优点

学习 Spring MVC 的时候,或者在 SSH 打天下的时候,你一定被一堆 XML 或者 “Spring 集成 XXX” 这样的问题搞的不知所向,从现在开始,你不用担心了,这一切都不是问题。

因为 SpringBoot 很简单。

  1. 为所有 Spring 开发者更快的入门
  2. 开箱即用,提供各种默认配置来简化项目配置
  3. 内嵌式容器简化 Web 项目
  4. 没有冗余代码生成和 XML 配置的要求
  5. 提供一系列大型企业级项目的功能性特性(比如:安全、健康检测、外部化配置、数据库访问、restful 搭建等很多特性这里就不一一叙说了,后期文章会陆续更新)

starter 与 metadata

这里主要说一个东西,SpringBoot 与其它模块间的集成是通过 starter 来完成的,这个概念很重要,不论是你学习还是做插件开发的时候。

举例子来说,我们集成 SpringBoot 和 Mybatis,你不需要再去找桥接的包,只需要引入 Mybatis starter 就好了。

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

在配置唯一配置文件 application.yaml 或者 application.properties 的时候,假设你不清楚配置项,或者想要深入研究配置项,基本上每个 starter 中都有一个叫 xxProperties.java 的配置项文件,里面的属性就是你需要默认或者改变的。例如 MyBatis starter 中就有 org.mybatis.spring.boot.autoconfigure.MybatisProperties

/**
 * Configuration properties for MyBatis.
 *
 * @author Eddú Meléndez
 * @author Kazuki Shimizu
 */
@ConfigurationProperties(prefix = MybatisProperties.MYBATIS_PREFIX)
public class MybatisProperties {

  public static final String MYBATIS_PREFIX = "mybatis";

  /**
   * Location of MyBatis xml config file.
   */
  private String configLocation;

  /**
   * Locations of MyBatis mapper files.
   */
  private String[] mapperLocations;

  /**
   * Packages to search type aliases. (Package delimiters are ",; \t\n")
   */
  private String typeAliasesPackage;

  /**
   * Packages to search for type handlers. (Package delimiters are ",; \t\n")
   */
  private String typeHandlersPackage;

  // 省略其它
}

@ConfigurationProperties 注解表明了 Mybatis 配置项的前缀为 mybatis 字符串,mapperLocations 属性就是一个配置项,它用于指明 MyBatis 的 Mapper XML 文件的放置路径。

当然这个属性和配置项还是有一些区别的,首先在 properties 文件里,是这样写的: mapper-locations

mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

一般是把属性里的驼峰法写成小写字母,单词之间用 - 连接,那么这个关系可以在哪里参阅?

可以使用 IDEA 查看 mybatis-spring-boot-starter 的子模块 mybatis-spring-boot-autoconfigureMETA-INF 文件夹,下面有一个 JSON 文件:spring-configuration-metadata.json

可以找到:

{
  "sourceType": "org.mybatis.spring.boot.autoconfigure.MybatisProperties",
  "name": "mybatis.config-location",
  "description": "Location of MyBatis xml config file.",
  "type": "java.lang.String"
}

sourceType 指向之前说的配置 Java 文件,name 即是配置项,description 是对配置项的简单描述,type 是说配置项可以接受什么样的值,mybatis.config-location 配置项可以接受一个字符串值。

这个 JSON 还有一些其它的键,比如 deprecated 说明此配置项是否已经不推荐使用,defaultValue 为配置项分配一个默认值。

其它的可以自己看看。

总之,一切都是可控的。

使用 SpingBoot 到底有多爽,用下面这幅图来表达:

使用了 SpringBoot 之后会怎样?

教程安排,索引目录

暂时先列这么多吧,之前想了一下,可能更新完全部想更新的,需要上百篇。我尽可能做到详实易懂。

未完待续,持续更新。


教程代码下载:https://github.com/liuqianfei/springboot-course-code

如果觉得这对你有用,请随意赞赏,给与作者支持
评论 0
最新评论