springboot:进入大厂前需要领悟的宝典,你明白吗?

在前面的文章过Damon说过SSM是目前较为流行的开发模板,但其实在许多大公司的开发中,主流的Springboot才是主流。这些公司之所以选择使用springboot的原因,不单单是因为优点是对新手无需任何门槛,只要懂Maven会看文档就能亦步亦趋的开始一个新项目。
并且对于一些高手来说,改配置也是分分钟的事。虽然Spring Boot的auto configuration loading真的非常绕,但熟悉spring的人还是蛮容易找到问题所在的。另外fat jar的打包方式让部署真的变得很美丽。devtools更是让臭名昭著的改代码重启成为了半个历史。所以今天Damon就跟大家说说springboot
首先我们知道Boot在计算机中是启动的意思,Spring Boot在spring中的图标刚好就是个启动开关,意味着它提供的是spring的一种一站式快速使用解决方案。
而Spring Boot是Spring社区较新的一个项目。该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人能更快的对Spring进行入门体验,让Java开发也能够实现Ruby on Rails那样的生产效率。为Spring生态系统提供了一种固定的、约定优于配置风格的框架。

Spring Boot具有如下特性:

  • 为基于Spring的开发提供更快的入门体验
  • 开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求。
  • 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
  • Spring Boot并不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式。

简单例子

  • 首先创建一个一般的Maven项目,有一个pom.xml和基本的src/main/java结构。

pom.xml 文件

  • 注意:pom.xml 下载完成后出现错误。以下有两种情况
  • 1、如果是某些包没有下载成功,可以删掉指定去maven本地库中删掉指定文件夹,然后重新编译项目,让maven重新下载包。

  • 2、如果出现以下错误,则右键项目,【Maven】【Update Project Configuration...】即可。

      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
      
          <groupId>com.etc</groupId>
          <artifactId>SpringBoot</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <packaging>jar</packaging>
      
          <name>SpringBoot</name>
          <description></description>
      
          <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>1.5.8.RELEASE</version>
              <relativePath/> <!-- lookup parent from repository -->
          </parent>
      
          <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
              <java.version>1.8</java.version>
          </properties>
      
          <dependencies>
              <!-- spring-boot-starter-*这里的*代表spring里头的某个功能 -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
              <!-- 单元测试 -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
                  <scope>test</scope>
              </dependency>
              <!-- 启动热部署 -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-devtools</artifactId>
                  <scope>provided</scope>
                  <optional>true</optional>
              </dependency>
          </dependencies>
      
          <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                      <dependencies>
                          <dependency>
                              <groupId>org.springframework</groupId>
                              <artifactId>springloaded</artifactId>
                              <version>1.2.6.RELEASE</version>
                          </dependency>
                      </dependencies>
                  </plugin>
              </plugins>
          </build>
      </project>
    

对pom的说明

  • 首先是增加了<parent>,增加父pom比较简单,而且spring-boot-starter-parent包含了大量配置好的依赖管理,在自己项目添加这些依赖的时候不需要写<version>版本号。

  • 使用父pom虽然简单,但是有些情况我们已经有父pom,不能直接增加<parent>时,可以通过如下方式:

          <dependencyManagement>
                   <dependencies>
                      <dependency>
                          <!-- Import dependency management from Spring Boot -->
                          <groupId>org.springframework.boot</groupId>
                          <artifactId>spring-boot-dependencies</artifactId>
                          <version>1.2.3.RELEASE</version>
                          <type>pom</type>
                          <scope>import</scope><!—这个地方-->
                      </dependency>
                  </dependencies>
              </dependencyManagement>
    

关于java.version属性

  • 上面pom.xml虽然没有出现这个属性,这里要特别提醒。
  • Spring默认使用jdk1.6,如果你想使用jdk1.8,你需要在pom.xml的属性里面添加java.version,如下:
    <properties>
        <java.version>1.8</java.version>
    </properties>

添加spring-boot-starter-web依赖

  • Spring通过添加spring-boot-starter-*这样的依赖就能支持具体的某个功能。
  • 我们这个示例最终是要实现web功能,所以添加的是这个依赖。
  • 更完整的功能列表可以查看:Using-boot-starter-poms

添加spring-boot-maven-plugin插件

  • 该插件支持多种功能,常用的有两种,第一种是打包项目为可执行的jar包。
  • 在项目根目录下执行mvn package将会生成一个可执行的jar包,jar包中包含了所有依赖的jar包,只需要这一个jar包就可以运行程序,使用起来很方便。该命令执行后还会保留一个XXX.jar.original的jar包,包含了项目中单独的部分。
  • 生成这个可执行的jar包后,在命令行执行java -jar xxxx.jar即可启动项目。
  • 另外一个命令就是mvn spring-boot:run,可以直接使用tomcat(默认)启动项目。
  • 第二种功能就是热部署了,在我们开发过程中,我们需要经常修改,为了避免重复启动项目,我们可以启用热部署。

spring-loaded热部署

  • Spring-Loaded项目提供了强大的热部署功能,添加/删除/修改 方法/字段/接口/枚举 等代码的时候都可以热部署,速度很快,很方便。

  • 想在Spring Boot中使用该功能非常简单,就是在spring-boot-maven-plugin插件下面添加依赖:

  •           <dependency>
                  <groupId>org.springframework</groupId>
              <artifactId>springloaded</artifactId>
                  <version>1.2.6.RELEASE</version>
              </dependency>
              <!--  支持热部署 eclipse推荐使用,注:该功能在dependencies中添加 -->
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-devtools</artifactId>
                  <scope>provided</scope>
                  <optional>true</optional>
              </dependency>
    
  • 添加以后,通过mvn spring-boot:run启动就支持热部署了。

  • 注意:使用热部署的时候,需要IDE编译类后才能生效,你可以打开自动编译功能,这样在你保存修改的时候,类就自动重新加载了。

总结:

作为一个新生程序猿,Damon希望能够与大家一同进步。文章或者描述有所不足的地方,希望大家多多提出来,一同进步。

Damon会继续发掘一些有用的咨询,知识以及新工具,与大家一同分享,谢谢!

过去文章都上传到github,有兴趣的小伙伴可以Star下:https://github.com/xxxyyh/Front-end-knowledge.git

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容