Springboot入门

一、什么是Springboot

        就是一个javaweb的开发框架,和SpringMVC类似,对比其他Javaweb框架的好处,官方说是简化开发,约定大于配置, you can "just run",能迅速的开发web应用,几行代码开发一个http接口。Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。同时它集成了大量常用的第三方库配置(例如 Redis、MongoDB、Jpa、Quartz RabbitMQ、等等),SpringBoot 应用中这些第三方库几乎可以零配置的开箱即用。简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架 。

        Spring Boot的主要优点:
                1、为所有Spring开发者更快的入门
                2、开箱即用,提供各种默认配置来简化项目配置
                3、内嵌式容器简化Web项目
                4、没有冗余代码生成和XML配置的要求

二、yaml语法

        1、配置文件

                SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的:application
                application.properties          语法结构 : key=value
                application.yaml                     语法结构 :key:空格 value
                配置文件的作用 :修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了;

        2、yml基础语法

                1、空格不能省略

                2、以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。

                3、属性和值的大小写都是十分敏感的

        格式:        字面量:普通的值 [ 数字,布尔值,字符串 ]

                字符不需要加" "号

        例如:

实体类:

@Component  //注册bean到容器中
@ConfigurationProperties(prefix = "people")
/*
@ConfigurationProperties作用:
将配置文件中配置的每一个属性的值,映射到这个组件中;
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
参数 prefix = “people” : 将配置文件中的people下面的所有属性一一对应
*/
public class People {
    private String name;
    private int age;
    private String address;
    private String birth;
    private Boolean happy;
    private Map<String,Object> maps;
    private List<Object> lists;

}

 使用@ConfigurationProperties注解时需要导入配置文件,否则会报错

<!-- 导入配置文件处理器,配置文件进行绑定就会有提示,需要重启 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

application.ymal文件自动装配实体类:


people:
  name: rk
  age: 3
  address: 汉中西乡
  birth: 2000/11/30
  maps: {k1: 2,k2: v3}
  list:
    - code
    - muisc
    - girl
    - trip
  dog:
    name: 杜佳伟
    age: 67

@ConfigurationProperties注解和@Value注解对比:

        1、@ConfigurationProperties只需要写一次即可 , @Value则需要每个字段都添加
        2、松散绑定:这个什么意思呢? 比如我的yml中写的last-name,这个和lastName是一样的,         - 后面跟着的字母默认是大写的。这就是松散绑定。可以测试一下
        3、JSR303数据校验 , 这个就是我们可以在字段是增加一层过滤器验证 , 可以保证数据的合法性
        4、复杂类型封装,yml中可以封装对象 , 使用value就不支持

结论:配置yml和配置properties都可以获取到值 , 强烈推荐 yml;如果我们在某个业务中,只需

要获取配置文件中的某个值,可以使用一下 @value;如果说,我们专门编写了一个JavaBean来

和配置文件进行一一映射,就直接@configurationProperties.

三、JSR303数据校验

        Springboot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式

例如:

@Component //注册bean
@ConfigurationProperties(prefix = "person")
@Validated //数据校验
public class Person {
    @Email(message="邮箱格式错误") //name必须是邮箱格式
    private String name;
}

 常见数据校验注解:

@Null 验证对象是否为null
@NotNull 验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空
格.
@NotEmpty 检查约束元素是否为NULL或者是EMPTY.
Booelan检查
@AssertTrue 验证 Boolean 对象是否为 true
@AssertFalse 验证 Boolean 对象是否为 false
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Length(min=, max=) string is between min and max included.
日期检查
@Past 验证 Date 和 Calendar 对象是否在当前时间之前
@Future 验证 Date 和 Calendar 对象是否在当前时间之后
@Pattern 验证 String 对象是否符合正则表达式的规则

四、多种不同配置环境的切换

        profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境;我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml , 用来指定多个环境版本;例如

方式一:使用properties实现多环境切换

        默认情况下使用的application.properties的配置问文件,若要使用dev的,则需要在application.properties中指定 .      

spring.profiles.active: dev

 方式二:使用ylam实现多环境切换

        和properties配置文件中一样,但是使用yml去实现不需要创建多个配置文件,所有的配置都写在一个文件中,不同配置用---分隔开

server:
port: 8081
#选择要激活那个环境块
spring:
profiles:
active: prod

---
server:
port: 8083
spring:
profiles: dev #配置环境的名称
---
server:
port: 8084
spring:
profiles: prod #配置环境的名称

 5、配置文件加载位置

        外部加载配置文件的方式十分多,我们选择最常用的即可,在开发的资源文件中进行配置(优先级最低)

        springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件:

        优先级1:项目路径下的config文件夹配置文件
        优先级2:项目路径下配置文件
        优先级3:资源路径下的config文件夹配置文件
        优先级4:资源路径下配置文件

         优先级由高到底,高优先级的配置会覆盖低优先级的配置;SpringBoot会从这四个位置全部加载主配置文件;互补配置;

        

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rk..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值