Spring Boot框架--初识

一、Spring Boot概要

1.Spring Boot简介

Spring Boot它使用 “习惯 优于配置” (项目中存在大量的配置,而 Spring Boot 内置一个习惯性的配置,让你无须手动进行配 置)的理念让你的项目快速运行起来。使用 Spring Boot 很容易创建一个独立运行(运行jar,内嵌 Servlet 容器)、准生产强力的基于 Spring 框架的项目,使用 Spring Boot你可以不用或者只需要很少的 Spring 配置。

2.Spring Boot优点

创建独立Spring应用

内嵌web服务器

自动strater依赖,简化构建配置

起步以来,起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM), 定义了对其他库的传递依赖 ,这些东西加在一起即支持某项功能。 简单的说,起步依赖就是 将具备某种功能的坐标打包到一起,并提供一些默认的功能

自动配置Spring以及第三方功能

提供生产级别的监控,健康检查及外部化配置

无代码生成,无需编写XML

注意:

SpringBoot是整合Spring技术栈的一站式框架

SpringBoot是简化Spring技术栈的快速开发脚手架

Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式

 3.SpringBoot缺点

        迭代快,需要时刻关注变化

        封装太深,内部原理复杂,不容易精通

 二、SpringBoot入门

1.搭建SpringBoot项目

1. 创建一个新项目

2. 选择spring initalizr , 可以看到默认就是去官网的快速构建工具那里实现

3. 填写项目信息

4. 选择初始化的组件(初学勾选 Web 即可)

5. 填写项目路径

6. 等待项目构建成功

2.运行原理初步探究

1. spring-boot-starter-parent

        springBoot项目都要继承spring-boot-starter-parent

        spring-boot-starter-parent中定义了若干个依赖管理

        继承parent模块可以避免多个依赖使用相同技术时出现依赖冲突

        继承parent的形式也可以采用引入依赖的形式实现效果例如alibaba

2. start

         导入套餐形式的坐标从而简化配置,坐标实现依赖传递

3. 引导类

        程序主入口,初始化spring容器,扫描所有类

        可以通过run方法返回值获取bean检验

4. 内嵌tomcat

三、SpringBoot核心配置

1.配置文件分类

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就 可以使用 application.properties或者application.yml(application.yaml)进行配置

application.properties

语法结构:  key=value

                    server.port=8081

application.yml

语法结构: key:空格value(冒号后面必须要有空格)

                server:

                        port: 8081

小结:

SpringBoot提供了2种配置文件类型:properteis和yml/yaml

默认配置文件名称:application

在同一级目录入如果三类文件共存,优先级为:properties > yml > yaml

2.YAML概述

YAML全称是 YAML Ain't Markup Language 。YAML是一种直观的能够被电脑识别的的数据数据序

列化格式, 并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语

言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心

的,比传统的xml方式更加简洁。

YAML文件的扩展名可以使用.yml或者.yaml。

properties:

server.port=8080

server.address=127.0.0.1

yml:

server:

        port: 8080

                address: 127.0.0.1

3.YAML基础语法

1. 大小写敏感

2. 数据值前边必须有空格,作为分隔符

3. 使用缩进表示层级关系

4. 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混 乱)。

5. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

6. "#"表示注释,从这个字符一直到行尾,都会被解析器忽略。

YAML:数据格式

字面量:普通的值【数字,布尔值,字符串】

boolean: TRUE             #TRUE,true,True,FALSE,false,False均可

float: 3.14                     #6.8523015e+5 #支持科学计数法

int: 123                         #0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制

string: HelloWorld        #字符串可以直接书写

数组:一组按次序排列的值(List,set)

address:

        - beijing

        - shanghai

#行内写法

company:[阿里巴巴,华为,腾讯]

对象,Map(键值对)

person:

        name: liming

#行内写法

person:{name: liming}

#对象数组格式一

users:

        - name: Tom

        age: 4

        - name: Jerry

        age: 5

#对象数组格式二

users:

        -

                name: Tom

                age: 4

        -

                name: Jerry

                age: 5

对象数组缩略格式

users2: [ { name:Tom,age:4 },{ name:Jerry,age:5 } ]

YAML:参数引用

name: wangzhuo

person: name: xuelaoshi

pet: ${name} # 引用上边定义的name值

name: xuls${random.uuid} # 配置文件占位符,随机uuid

name: ${person.name}_真帅

YAML:小结
1) 配置文件类型

        properties:和以前一样 (设置文件的语言编码UTF-8)

        yml/yaml:注意空格

2) yaml:简洁,以数据为核心

基本语法

        大小写敏感

        数据值前边必须有空格,作为分隔符

        使用空格缩进表示层级关系,相同缩进表示同一级

数据格式

        对象

        数组: 使用 " - "表示数组每个元素

        纯量

参数引用  ${key}

4.读取配置内容

yaml文件更强大的地方在于,他可以给实体类直接注入匹配值!

支持方式: 逐个注入:@Value

批量注入:     1.@ConfigurationProperties

                        2.Environment类

逐个注入

加载指定的配置文件@PropertySource :加载指定的配置文件;

@Component //注册bean
public class Dog {
@Value("阿黄")
private String name;
@Value("18")
private Integer age;
}

在resources目录下新建一个dog.yml文件

name: 阿黄
age: 18
@PropertySource(value = "classpath:dog.yml")
@Component //注册bean
public class Dog{
@Value("${name}")
private String name;
@Value("${age}")
private Integer age;
}

批量注入方式1

@Component //注册bean到容器中
public class Person {
private String name;
private integer age;
private boolean marry;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
//有参无参构造、get、set方法、toString()方法
}

编写yaml文件内容

person1:
name: wangls
age: 18
marry: true
birth: 1990/10/19
maps: {k1: v1,k2: v2}
lists:
- code
- bodybuilding
- music
dog:
name: summer
age: 1

将数据注入到我们的类中

@ConfigurationProperties作用:
将配置文件中配置的每一个属性的值,映射到这个组件中;
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应


@Component //注册bean
@ConfigurationProperties(prefix = "person1")
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}

如果编写完配置文件有红色提示,则可以添加坐标隐藏

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

批量注入方式2

直接在测试类中装配开发模式类辅助获取key对应value数据

@Autowired
private Environment env;
@Test
public void test(){
System.out.println(env.getProperty("person1.name"));
System.out.println(env.getProperty("person1.age"));
System.out.println(env.getProperty("person1.dog.name"));
System.out.println(env.getProperty("person1.lists[0]"));
}

5.JSR303数据校验

对于 web 服务来说,为防止非法参数对业务造成影响,在 Controller 层一定要做参数校验的!

大部分情况下,请求参数分为如下两种形式:

1. POST 、 PUT 请求,使用 requestBody 传递参数;

2. GET 请求,使用 requestParam/PathVariable 传递参数。

JSR303标准

JSR的全称是Java Specification Requests(Java 规范提案),是指向JCP ( Java Community

Process )提出新增一个标准化技术规范的正式请求。

Java API 规范( JSR303 )定义了 Bean 校验的标准 validation-api ,但没有提供实现。

hibernate validation 是对这个规范的实现,并增加了校验注解如 @Email 、 @Length 等。

Spring Validation 是对 hibernate validation 的二次封装,用于支持 spring mvc 参数自动校验。

JSR303校验注解的使用步骤

1.添加依赖,导入spring-boot-starter-validation启动器

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
 </dependency>

2.在实体类需要校验的成员字段(Field)上,添加校验注解。

@Component //注册bean到容器中
//@ConfigurationProperties(prefix = "dog")
//@Validated
public class Dog {
@NotNull(message = "不能为空")
private String name;
@NotNull(message = "不能为空")
@Max(value = 15,message = "最大值")
private Integer age;
@Min(value = -1,message = "最小值")
private Integer length;
@Email(message = "邮箱必须合法")
private String email;
}

6.Controller统一异常处理

@ControllerAdvice:统一为Controller进行"增强"

@ExceptionHandler : 异常处理

import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.*;
@ControllerAdvice
public class BindExceptionUtilAdvice {
// 验证参数未使用@RequestBody注解
@ExceptionHandler(BindException.class)
@ResponseBody//选择添加
public String handlerBindException(BindException ex, HttpServletRequest
request){
return "全局异常处理器成功"; // 跳转至统一提示错误信息的视图
}
}

7.多环境切换

我们在开发Spring Boot应用时,通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。

命名语法:

例如:application-环境简称.properties/yml

           application-dev.properties/yml 开发环境

           application-test.properties/yml 测试环境

           application-pro.properties/yml 生产环境

profile激活方式

spring:

        profiles:

                active:  环境简称

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值