SpringBoot建立

64 阅读3分钟

image.png

勾选Spring Web自动添加Spring Web dependencies image.png

Spring和SpringBoot对比 image.png

image.png

  • 去除一些不想看的文件:
  • settings->file types->ignored files and folders

image.png

SpringBoot程序优点

  • 起步依赖(简化依赖配置)
  • 自动配置(简化常用工程相关配置)
  • 辅助功能(内置服务器)

parent

image.png

  • 开发springboot要继承spring-boot-starter-parent
  • spring-boot-starter-parent中定义了若干个依赖管理
  • 继承parent模块可以避免多个依赖使用相同的技术时出现依赖版本冲突
  • 继承parent的形式也可以采用引入依赖的形式实现效果(maven是单继承 继承了一次就不能再继承了)

starter

  • springboot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的

    • 对比parent

    所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少冲突的目的 spring-boot-starter-parent各版本间存在着诸多坐标版本不同

  • 实际开发

    • 使用任意坐标时,仅书写GAV中的G和A,V由springboot提供,除非springboot未提供对应版本V
    • 如果发生坐标错误,再指定Version(要小心版本冲突)

引导类

  • SpringBoot工程提供引导类用来启动程序
  • SpringBoot工程启动后创建并初始化Spring容器

image.png

  • SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目
  • SpringBoot工程运行后初始化Spring容器,扫描引导类所在的包加载bean

辅助功能

  • 内嵌的tomcat服务器是SpringBoot辅助功能之一 image.png

  • 让tomcat的容器以对象的形式在springboot的容器中运行起来

  • 如果想把tomcat换成Jetty:只需要用exclusion把tomcat排除,然后加入jetty的依赖

image.png

内置服务器
  • tomcat(默认)apache出品,粉丝多,应用面广,负载了若干较重的组件
  • jetty 更轻量级,负载性能远不及tomcat
  • undertow 负载性能勉强跑赢tomcat,但大多数人还是会选择tomcat

REST风格

image.png

image.png

  • 根据REST风格对资源进行访问成为RESTful

基础配置

  • 属性配置

resource下面的application.properties配置文件 image.png - 直接使用key-value形式书写

image.png

可以在官网的 quick start中参考文档第一项查看所有的配置以及说明

用什么技术才写什么配置

  1. SpringBoot中导入对应的starter后,提供相对应的配置属性
  2. 书写SpringBoot配置采用关键字+提示形式书写

三种配置文件类型

  • application.properties
  • application.yml(主要用这个)
  • application.yaml

如果都存在 优先级properties>yml>yaml

  • 如果有相同的属性 按照优先级覆盖
  • 如果是不同的属性 全部都会保留下来

属性提示消失问题解决

image.png 出现提示是idea的功能 而不是springboot的功能,不弹提示说明idea并不认为它是个配置文件 那么只需要把它设置为配置文件就可以了

yaml

  • YAML(YAML Ain't Markup Language),一种数据序列化格式

  • 优点

    • 容易阅读
    • 容易与脚本语言交互
    • 以数据为核心,重数据轻格式
  • YAML文件扩展名

    • .yml(主流)
    • .yaml
  • yaml语法规格

image.png

核心规则:数据前面要加空格与冒号隔开

image.png

image.png

读取yaml中的单一数据变量

image.png

yaml文件中的变量引用

image.png

  • 如果其中有转义字符,需要用双引号包裹才能生效

读取yaml的全部属性数据

@Autowired
Environment env;
//把全部属性封装进这个对象

image.png

读取yaml引用数据属性数据(主流)