全套SpringBoot2.x入门到项目实战课程系列(第1章 Spring Boot 概要、第2章 Spring Boot 入门开发)

第1章 Spring Boot 概要

Spring Boot已成为当今最流行的微服务开发框架,本文是如何使用Spring Boot快速开始Web微服务开发的指南,我们将使创建一个可运行的包含内嵌Web容器(默认使用的是Tomcat)的可运行Jar包。

1.1 Spring Boot 介绍

  • 随着动态语言的流行(Ruby、Scala、Node.js), Java的开发显得格外的笨重;繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术整合难度大。
  • 在上述环境下,Spring Boot由此诞生,它的设计是为了使您能够尽可能快地启动和运行。它使用 “习惯优于配置” (项目中存在大量的配置,而 Spring Boot 内置一个习惯性的配置,让你无须手动进行配置)的理念让你的项目快速运行起来。使用 Spring Boot 很容易创建一个独立运行(运行jar,内嵌 Servlet 容器)、准生产强力的基于 Spring 框架的项目,使用 Spring Boot你可以不用或者只需要很少的 Spring 配置。提供了 J2EE开发的一站式解决方案。

1.2 Spring Boot 优点

  • 快速构建独立运行的Spring项目;
  • 无须依赖外部Servlet容器,应用无需打成WAR包;项目可以打成jar包独自运行;
  • 提供 一系列 starter pom 来简化 Maven 的依赖加载;
  • 大量的自动配置,对主流开发框架的无配置集成;
  • 无须配置XML,开箱即用,简化开发,同时也可以修改默认值来满足特定的需求;
  • Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式;
  • 极大提高了开发、部署效率。

第2章 Spring Boot 入门开发

技术点要求:

  • 熟练 Spring 框架的使用
  • 熟练 Maven 依赖管理与项目构建
  • 熟练使用 Eclipse 或 IDEA

2.1 环境要求

  • jdk1.8 (Spring Boot 推荐jdk1.8及以上): java version “1.8.0_151”
  • Maven 3.x (maven 3.2 以上版本):Apache Maven 3.3.9
  • IntelliJ IDEA :IntelliJ IDEA 2018.2.2 x64
  • SpringBoot 使用当前最新稳定版本:第5章web开发前 2.0.6.RELEASE ,后面使用2.1.0.RELEASE
    SpringBoot官方截图

2.2 修改Maven配置文件

  • 在 Maven 安装目录下的 settings.xml 配置文件中, 添加如下配置
    <!--开始处更改下载依赖的存放路径,     以下目录需要已经创建-->
    <localRepository>D:\javasource\maven-repository</localRepository>
    <!--在 mirrors 标签下 添加阿里云maven私服库-->
    <mirrors>
    	<mirror>
    		<id>alimaven</id>
    		<mirrorOf>central</mirrorOf>
    		<name>aliyun maven</name>
    		<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    	</mirror>
    </mirrors>
    
    <!-- 在 profiles 标签下指定jdk版本 -->
    <profile>
    	<id>jdk-1.8</id>
    	<activation>
    		<activeByDefault>true</activeByDefault>
    		<jdk>1.8</jdk>
    	</activation>
    	<properties>
    		<maven.compiler.source>1.8</maven.compiler.source>
    		<maven.compiler.target>1.8</maven.compiler.target>
    		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    	</properties>
    </profile>
    

2.3 IntelliJ IDEA 设置

  • 在idea上将 maven 环境添加进来
    打开idea设置
    设置maven参数

2.4 快速构建 Spring Boot 项目

  • 需求:浏览器发送 /hello 请求,服务器接受请求并处理,响应 Hello World 字符串
  • 分析 :构建 Spring Boot 项目,事实上建立的就是一个 Maven 项目

2.4.1 创建 Maven工程

在 IDEA上新建一个空的jar类型 的 maven 工程
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

2.4.2 修改 pom.xml

  • 在 pom.xml 中添加 Spring Boot 相关的父级依赖, spring-boot-starter-parent 是一个特殊的starter,
  • 它提供了项目相关的默认依赖,使用它之后 ,常用的包依赖可以省去 version 标签。
  • 在 dependencies 添加构建 Web 项目相关的依赖
    <!-- Inherit defaults from Spring Boot -->
    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>2.0.6.RELEASE</version>
    </parent>
    <!-- Add typical dependencies for a web application -->
    <dependencies>
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    </dependencies>
    
  • 我们会惊奇地发现,我们的工程自动添加了好多好多jar包, 这些 jar包正是开发时需要导入的jar包
    在这里插入图片描述

2.4.3 创建控制器 Controller

package com.dragon.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {
	@ResponseBody
	@RequestMapping("/hello")
	public String hello() {
		return "HelloWorld...";
	}
}

2.4.4 创建一个引导类

  • 主要作用是作为启动 Spring Boot 项目的入口
    package com.dragon;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    /**
    * @SpringBootApplication 用于标识一个主程序类,说明当前是Spring Boot项目
    * @Description: com.dragon
    * @Auther: DragonWen
    * @Version: 1.0
    */
    @SpringBootApplication
    public class HelloMailAppliation {
    	public static void main(String[] args) {
    		SpringApplication.run(HelloMailAppliation.class, args);
    	}
    }
    

2.4.5 运行效果

  • 运行引导类后,会出现 如下一个标识,你能不能看出来下边这个图是什么东西?
    运行效果
  • 在浏览器地址栏输入localhost:8080/hello 即可看到运行结果
    运行结果

2.4.6 简化部署

  • 在 pom.xml 添加如下插件后, 将这个工程打成 jar 包后,可直接通过 java -jar 的命令运行
    <build>
    	<plugins>
    		<plugin>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-maven-plugin</artifactId>
    		</plugin>
    	</plugins>
    </build>
    
  • 如下操作进行打成 jar 包, 从控制台可发现 打成的jar包所在目录
    在这里插入图片描述

2.5 Spring Boot项目底层原理

2.5.1 pom.xml文件

  • spring-boot-starter-parent 是当前项目的父级依赖
    // 当前hello项目的 父级依赖
    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>1.5.9.RELEASE</version>
    </parent>
    
  • spring-boot-starter : Spring Boot 场景启动器,Spring Boot将所有的功能场景抽取出来,做成一个的starters(启动器),只需项目里引入相关场景的starter, 就会将它所有依赖导入进来。要用什么功能就导入什么场景的启动器。(各种启动器可参见官方文档 starter)
    • spring-boot-starter-parent :它父依赖 spring-boot-dependencies,参见下面:
      // spring-boot-starter-parent 的 父级依赖
      <parent>
      	<groupId>org.springframework.boot</groupId>
      	<artifactId>spring-boot-dependencies</artifactId>
      	<version>1.5.9.RELEASE</version>
      	<relativePath>../../spring-boot-dependencies</relativePath>
      </parent>
      
    • spring-boot-dependencies 是管理了 Spring Boot项目中的所有依赖版本
      在这里插入图片描述
    • 以后 我们导入依赖默认不需要写版本号,也就是可以省去 version 标签;(当前没有在dependencies里面管理的依赖自然需要声明版本号)
  • spring-boot-starter-web
    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    • 依赖导入了 Web 项目运行所依赖的组件;如 Tomcat / SpringMVC等

2.5.2 引导类

/**
* @SpringBootApplication 用于标识一个引导类,说明当前是Spring Boot项目
* @Auther: www.dragon.com
*/
@SpringBootApplication
public class HelloMailAppliation {
	public static void main(String[] args) {
		SpringApplication.run(HelloMailAppliation.class, args);
	}
}
  • 通常有一个名为 *Application 的入口 类,里面定义一个main方法,使用
    SpringApplication.run(HelloMailAppliation.class, args); 来启动 SpringBoot 应用项目
  • @SpringBootApplication 注解主要组合了 @SpringBootConfiguration、@EnableAutoConfiguration、
    @ComponentScan
  • @SpringBootApplication 注解说明:
    • 标注在某个类上, 说明这个类是 Spring Boot 的引导类,Spring Boot 就应该运行这个类的main方法来启动 SpringBoot 应用;
      @Target(ElementType.TYPE)
      @Retention(RetentionPolicy.RUNTIME)
      @Documented
      @Inherited
      @SpringBootConfiguration
      @EnableAutoConfiguration
      @ComponentScan(excludeFilters = {
      @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
      @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
      public @interface SpringBootApplication {
      
      • @SpringBootApplication 是以下3个注解的总和:
        • @SpringBootConfiguration:用于定义一个Spring Boot的配置类( 配置类 等同 配置文件)
          • 引用了 @Configuration 注解,是Spring底层的一个注解,用于定义 Spring 的配置类。
          • 配置类也是容器中的一个组件 @Component
        • @EnableAutoConfiguration :
          • 告诉Spring Boot开启自动配置功能,这样Spring Boot会自动根据你导入的依赖jar包来自动配置项目。
            @AutoConfigurationPackage
            @Import({AutoConfigurationImportSelector.class})
            public @interface EnableAutoConfiguration {
            
          • @AutoConfigurationPackage ——》 @Import({Registrar.class})
            • 会将引导类(@SpringBootApplication标注的类)所在的包及下面所有子包里面的所有组件扫描到Spring容器;
          • @Import({AutoConfigurationImportSelector.class})
            • 将所有需要导入的组件以全类名的方式返回; 这些组件就会被添加到容器中
            • 会给容器导入非常多的自动配置类(xxxxAutoConfiguration),就是导入并配置好当前项目中所需要的组件,省去我们手动编写配置去注入组件.
              在这里插入图片描述
  • Spring Boot在启动的时候从(spring-boot-autoconfigure-2.0.6.RELEASE.jar)类路径下的METAINF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的文件,自动配置类都帮我们完成了;
    在这里插入图片描述
  • @ComponentScan: 该注解标识的类, 会被 Spring 自动扫描并且装入bean容器。

2.6 使用Spring初始化器创建Spring Boot项目

  • 注:初始化向导需要联网创建Spring Boot项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 默认生成的Spring Boot项目;
    • 删除不需要的文件与目录 , spring-boot-starter-test 是 Spring Boot 单元测试模块
      在这里插入图片描述
  • 引导类已经生成了,我们只需要实现业务即可
    在这里插入图片描述
  • resources 文件夹中目录结构:
    • static :保存所有的静态资文件, js css images
    • templates :保存所有的模板页面(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面),可以使用模板引擎(freemarker、thymeleaf);
    • application.properties :Spring Boot应用的配置文件;可以修改一些默认设置;
      如修改默认端口 server.prot=8081

持续更新。。。

My GitHub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值