SpringBoot学习,超值入手哦!

前言:以下内容只是本人所学习SpringBoot的冰山一角,如果大家想全面的学习SpringBoot可以到官方网址;

​ 官方网址:https://spring.io/projects/spring-boot

一、什么是SpringBoot

​ Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

二、为什么要使用Spring Boot

​ Spring Boot是为简化Spring项目配置而生,使用它使得jar依赖管理以及应用编译和部署更为简单。Spring Boot提供自动化配置,使用Spring Boot,你只需编写必要的代码和配置必须的属性。

​ 使用Spring Boot,只需20行左右的代码即可生成一个基本的Spring Web应用,并且内置了tomcat,构建的fat Jar包通过Java -jar就可以直接运行。 java -jar crm.jar

​ 如上特性使得Spring Boot非常契合微服务的概念,可以结合Spring Boot与Spring Cloud和Docker技术来构建微服务并部署到云端:

​ 一个可执行jar即为一个独立服务很容易加载到容器,每个服务可以在自己的容器(例如docker)中运行

通过一个脚本就可以实现配置与部署,很适合云端部署,并且自动扩展也更容易

​ 简单而言,即Spring Boot使编码更简单,使配置更简单,使部署更简单,使监控更简单。!

​ Springboot就是为了简化spring应用搭建,开发,部署,监控的开发工具。

三、Spring Boot的简单概述

  1. 为简化Spring项目配置而生

  2. 它使用maven的方式对Spring应用开发进行进一步封装和简化

  3. 是为了简化spring应用搭建,开发,部署,监控的开发工具

四、SpringBoot-HelloWorld程序

1 开发环境要求:

​ 开发环境JDK 1.8

​ 项目管理工具( Maven )

​ 开发工具(Eclipse/idea)

2 创建Maven项目

​ ①:Maven项目与普通项目之间的区别最主要的就是Maven项目有唯一的标识 pom.xml配置文件

3 导入Spring Boot依赖

<!-- 

spring boot 父节点依赖,引入这个之后相关的引入就不需要添加version配置,spring boot会自动选择最合适的版本进行添加。

 -->

	<parent>

		<groupId>org.springframework.boot</groupId>

		<artifactId>spring-boot-starter-parent</artifactId>

		<version>2.0.5.RELEASE</version>

	</parent>

	<!--添加spring-boot-starter-web依赖-->

	<dependency>

		<groupId>org.springframework.boot</groupId>

		<artifactId>spring-boot-starter-web</artifactId>

	</dependency>

4 编码测试

​ ①:新建一个controller类

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

@Controller
@RequestMapping("/hello")
public class HellowController {
    @RequestMapping("/app")
    @ResponseBody
    
    public String hello() {
        return "HelloWord.....!!!";
    }
}

​ ②:新建一个启动类 App

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }
}

5 SpringBoot-HelloWorld分析

​ spring-boot-starter-web:web支持,其实就是springmvc简化使用。

​ Spring-boot-starter-jdbc:springboot对jdbc支持

​ Spring-boot-starter-data jpa:springboot对data jpa支持

​ Spring-boot-starter-mybatis:springboot对mybatis支持

​ Spring-boot-starter-test:springboot对test支持

五、SpringBoot项目结构

​ application.properties、application.yml
​ static
​ templates

六、打包

 如果依赖父亲是spring-boot-starter-parent,就不需要添加 
1.导入打包插件
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>cn.itsource.springboot.HelloApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
               
            </plugin>
        </plugins>
    </build>

或者 

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
           <plugin>
        <plugins>
<build>

运行:

java -jar xxx.jar

七、热部署

1 即使修改了输出内容也要重启APP,非常麻烦!可以使用spring-boot-devtools来实现热部署!

2 在pom.xml中导入热部署的依赖包

添加依赖包: 
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
           <scope>true</scope>
</dependency>	

八、Spring boot配置

  1. 配置文件

    SpringBoot使用一个全局的配置文件,配置文件名是固定的;

    •application.properties -传统方式,不太优美

    •application.yml -推荐使用

    配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

2 YAML做配置一门语言:

​ 以前的配置文件;大多都使用的是 xxxx.xml文件还有properties;

​ YAML:以数据为中心,比json、xml等更适合做配置文件;

​ YAML:配置例子

server:

port: 8081

​ XML:

<port>8081</port>

properties:

server.port =8081

  1. YML语法

    3.1. 基本语法

    k:(空格)v:表示一对键值对(空格必须有);

​ 以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的

server:

​ port: 8081

​ path: /hello

属性和值也是大小写敏感;

3.2. 值的写法

​ ①:字面量:普通的值(数字,字符串,布尔)

​ k: v:字面直接来写;

​ 字符串默认不用加上单引号或者双引号;

​ “”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

​ name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi

​ ‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据

​ name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi

②:k: v:在下一行来写对象的属性和值的关系;注意缩进

​ 对象还是k: v的方式

friends:

	lastName: zhangsan

	age: 20

行内写法:

friends: {lastName: zhangsan,age: 18}

③:数组(List、Set):

用- 值表示数组中的一个元素

pets:

- cat

- dog

- pig

4. Profile多环境支持

4.1. *为什么要做多环境配置*

一套代码要在多种环境运行(开发,测试,上线),所以我们的配置文件要支持多种环境

4.2. *多********profile文件*

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml

application-dev.yml

application-test.yml

默认使用application.properties的配置;

  1. Yml支持多文档块模式
server:
  port: 8081
spring:
  profiles:
    active: prod
    
server:
  port: 8083
spring:
  profiles: dev

server:
  port: 8084
spring:
  profiles: prod  #指定属于哪个环境

九、第一个SpringBoot项目疑问

1 继承parent包有什么作用?

​ (1) 它管理着项目中很多jar包和插件,jar包只是管理,不引用

​ (2) 子项目想映入jar包,只需要依赖就可以了(注意:可以不写版本号)

2.在子项目中,我们只依赖了start-web包,但是它给我们导入了很多包,并且我们导包,没有加版本号?

​ (1) SpringBoot提供的jar包是一个组合包,当你把这个包依赖进来以后,它会把SpringMVC需要的所有依赖包全部给 你导入进来

​ (2) 注意:SpringBoot提供的jar包格式都是:spring-boot-starter-xxx

​ (3) SpringBoot提供的jar包的好处,简化了我们的导包过程

3.我们没有配置tomcat,tomcat来自哪里?

​ 当我们导入Web包的时候,它有一个包是内嵌tomcat包,所以当你程序启动的时候,它有服务器

4.我们没有配置各种xml文件,通过main方法,web项目就启动了

​ (1) 它会加载当前项目运行所需要的相关bean对象

​ (2) 它会自动装配SpringMVC相关的配置(它有默认配置,我们后面可以改)

​ (3) 初始话spring容器

​ (4) 它会把当前项目打成jar包放到内嵌tomcat中,进行运行

​ SpringBootApplication是个组合注解,它会去自动扫描当前包及其子包下的所有注

十、面试题

1.1. *SpringBoot有哪些优点*

Spring Boot 的优点有:

​ 1、减少开发,测试时间和努力。

​ 2、使用 JavaConfig 有助于避免使用 XML。

​ 3、避免大量的 Maven 导入和各种版本冲突。

​ 4、提供意见发展方法。

​ 5、通过提供默认值快速开始开发。

​ 6、没有单独的 Web 服务器需要。这意味着你不再需要启动 Tomcat,Glassfish 或其他任何东西。

​ 7、需要更少的配置 因为没有 web.xml 文件。只需添加用@ Configuration 注释 的类,然后添加用@Bean 注释的方法,Spring 将自动加载对象并像以前一样对其 进行管理。您甚至可以将@Autowired 添加到 bean 方法中,以使 Spring 自动装 入需要的依赖关系中。

​ 8、基于环境的配置 使用这些属性,您可以将您正在使用的环境传递到应用程序: -Dspring.profiles.active = {enviornment}。在加载主应用程序属性文件后, Spring 将在(application{environment} .properties)中加载后续的应用程序属 性文件。

1.2. *什么是JavaConfig?*

​ Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的优点在于:

​ 1、面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分 利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean 方 法等。

​ 2、减少或消除 XML 配置。基于依赖注入原则的外化配置的好处已被证明。但是, 许多开发人员不希望在 XML 和 Java 之间来回切换。JavaConfig 为开发人员提供 了一种纯 Java 方法来配置与 XML 配置概念相似的 Spring 容器。从技术角度来讲, 只使用 JavaConfig 配置类来配置容器是可行的,但实际上很多人认为将 JavaConfig 与 XML 混合匹配是理想的。

​ 3、类型安全和重构友好。JavaConfig 提供了一种类型安全的方法来配置 Spring 容器。由于 Java 5.0 对泛型的支持,现在可以按类型而不是按名称检索 bean,不 需要任何强制转换或基于字符串的查找。

*4.3.简单描述SpringBoot的自动装配原理*

​ 在SpringBoot的@SpringBootApplication注解中有一个注解@EnableAutoConfiguration

,这个注解的功能就是实现自动装配的。他的作用主要是扫描导入每个jar中的spring.factory中的内容,然后把里面的内容读取到内存中,其实就是读取一堆的配置类。然后引入之后里面有些@Codictional的注解,根据特定的条件帮我们创建bean并注入,省去我们自己配置bean的过程,简化了开发步骤.

*4.4.SpringBoot读取配置文件属性有几种方式*

​ ①利用@Value注解将对应的属性注入到field上

​ ②@ConfigurationProperties在类上使用字段匹配

​ ③通过PropertiesLoaderUtils

​ 利用org.springframework.core.io.support包下的PropertiesLoaderUtils读取配置文件从而获得对应的配置信息PropertiesLoaderUtils.loadProperties(new EncodedResource(new ClassPathResource(location), “UTF-8”));将对应配置文件的信息填入location即可

​ ④通过@PropertySource将属性映射给类的属性

​ ⑤利用Environment (org.springframework.core.env.Environment)

*4.5.如何使用SpringBoot实现异常处理?*

​ Spring 提供了一种使用 ControllerAdvice 处理异常的非常有用的方法。 我们通 过实现一个 ControlerAdvice 类,来处理控制器类抛出的所有异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值